
    gh%                     D   S SK r S SKJrJrJr  S SKJr  S SKJr  S SK	J
r
  S SKJrJrJrJr  S SKJr  \(       a  S SKJr  S S	KJr  S S
KJr  S SKJrJr   S SKrS SKJr   S SKr\R:                  r\R>                  r Sr!Sr%\!(       a  \" 5          S SK&J'r%  SSS5         " S S\5      r( " S S5      r)Sr* " S S\5      r+S r,S r-S r.S r/S r0S r1S r2g! \ a	    \" S5      ef = f! \ a!    S SK"r\RF                  r\RH                  r Sr! Nf = f! , (       d  f       N= f)    N)_check_minimum_versionIntegrationDidNotEnable)RequestExtractor)SentryWsgiMiddleware)SOURCE_FOR_STYLE)capture_internal_exceptionsensure_integration_enabledevent_from_exceptionparse_version)TYPE_CHECKING)Any)Dict)Optional)EventEventProcessor)__version__zFalcon not installedTF)_UNSETc                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
FalconRequestExtractor4   c                 .    U R                   R                  $ N)requestenvselfs    a/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/sentry_sdk/integrations/falcon.pyr   FalconRequestExtractor.env5   s    ||    c                 .    U R                   R                  $ r   )r   cookiesr   s    r   r"   FalconRequestExtractor.cookies9   s    ||###r    c                     g r    r   s    r   formFalconRequestExtractor.form=       r    c                     g r   r%   r   s    r   filesFalconRequestExtractor.filesA   r(   r    c                 2    U R                  5       nUS:  a  gg )Nr   z[REQUEST_CONTAINING_RAW_DATA])content_length)r   r-   s     r   raw_dataFalconRequestExtractor.raw_dataE   s      ,,.A2r    c                     S n[        5          U R                  R                  nS S S 5        U[        La  U$ g ! , (       d  f       N= fr   )r	   r   _media_FALCON_UNSET)r   cached_medias     r   jsonFalconRequestExtractor.jsonR   sA     (*  <<..L + }, +*s	   8
Ar%   N)__name__
__module____qualname____firstlineno__r   r"   r&   r*   r.   r4   __static_attributes__r%   r    r   r   r   4   s      $r    r   c                       \ rS rSrSrS rSrg)SentryFalconMiddlewaree   z9Captures exceptions in Falcon requests and send to Sentryc                     [         R                  " 5       R                  [        5      nUc  g [         R                  " 5       nSUl        UR                  [        X5      5        g )Nfalcon)
sentry_sdk
get_clientget_integrationFalconIntegrationget_isolation_scope_nameadd_event_processor_make_request_event_processor)r   reqrespargskwargsintegrationscopes          r   process_request&SentryFalconMiddleware.process_requesth   sN     ++-==>OP..0!!"?"QRr    r%   N)r6   r7   r8   r9   __doc__rN   r:   r%   r    r   r<   r<   e   s    CSr    r<   uri_templatepathc                   @    \ rS rSrSrS\ 3rSrS	S jr\S 5       r	Sr
g)
rC   v   r?   z
auto.http. c                 T    U[         ;  a  [        SU< S[         < S35      eXl        g )Nz%Invalid value for transaction_style: z (must be in ))TRANSACTION_STYLE_VALUES
ValueErrortransaction_style)r   r[   s     r   __init__FalconIntegration.__init__|   s,    $<<$&>@  "3r    c                  ~    [        [        5      n [        [        U 5        [	        5         [        5         [        5         g r   )r   FALCON_VERSIONr   rC   _patch_wsgi_app_patch_handle_exception_patch_prepare_middleware)versions    r   
setup_onceFalconIntegration.setup_once   s+      /0':!!#r    )r[   N)rR   )r6   r7   r8   r9   
identifieroriginr[   r\   staticmethodrd   r:   r%   r    r   rC   rC   v   s2    J*&F3 $ $r    rC   c                  H   ^ [         R                  mU4S jn U [         l        g )Nc                    >^  [         R                  " 5       R                  [        5      nUc	  T" T X5      $ [	        UU 4S j[        R
                  S9nU" X5      $ )Nc                    > T" TX5      $ r   r%   )envi
start_resporiginal_wsgi_appr   s     r   <lambda>B_patch_wsgi_app.<locals>.sentry_patched_wsgi_app.<locals>.<lambda>   s    %6tT%Nr    )span_origin)r@   rA   rB   rC   r   rg   )r   r   start_responserL   sentry_wrappedrn   s   `    r   sentry_patched_wsgi_app0_patch_wsgi_app.<locals>.sentry_patched_wsgi_app   sS     ++-==>OP$T3??-N)00

 c22r    )falcon_app_class__call__)rt   rn   s    @r   r`   r`      s    (113 !8r    c                  n   ^ [         R                  m[        [        T5      U4S j5       n U [         l        g )Nc                 b  > S =p#[        5          [        S U 5       5      n[        S U 5       5      nS S S 5        T" U /UQ76 nUb  Uc  U$ [        X#5      (       aA  [        U[        R
                  " 5       R                  SSS.S9u  pV[        R                  " XVS9  U$ ! , (       d  f       Nr= f)Nc              3   T   #    U  H  n[        U[        5      (       d  M  Uv   M      g 7fr   )
isinstance	Exception.0arguments     r   	<genexpr>S_patch_handle_exception.<locals>.sentry_patched_handle_exception.<locals>.<genexpr>   s     Wt8z(I7Vhhts   (	(c              3   h   #    U  H(  n[        U[        R                  5      (       d  M$  Uv   M*     g 7fr   )r{   r?   Responser}   s     r   r   r      s"      )-XHfoo1Vs   #2	2r?   F)typehandled)client_options	mechanism)hint)r	   next_exception_leads_to_http_5xxr   r@   rA   optionscapture_event)r   rJ   exresponsewas_handledeventr   original_handle_exceptions          r   sentry_patched_handle_exception@_patch_handle_exception.<locals>.sentry_patched_handle_exception   s     (*WtWWB )- H + 0<t<:) '55.)446>>#+>KE
 $$U6- +*s   %B  
B.)rv   _handle_exceptionr
   rC   )r   r   s    @r   ra   ra      s7     0 B B 13LM N< *I&r    c                  N   ^ [         R                  m SU4S jjn U [         l        g )Nc                    > U(       a	  T" XU5      $ [         R                  " 5       R                  [        5      nUb  [	        5       /U =(       d    / -   n T" X5      $ r   )r@   rA   rB   rC   r<   )
middlewareindependent_middlewareasgirL   original_prepare_middlewares       r   !sentry_patched_prepare_middlewareD_patch_prepare_middleware.<locals>.sentry_patched_prepare_middleware   sX     .zSWXX ++-==>OP"023z7GRHJ +:NNr    )NFF)falcon_helpersprepare_middleware)r   r   s    @r   rb   rb      s&    "0"C"C =BO  )JN%r    c                 \   [        U [        R                  5      =(       a$    U R                  =(       d    SR	                  S5      n[        U [        R                  [        R
                  R                  45      (       + nU=(       d    U=(       a    [        (       + =(       d    [        U5      $ )NrV   5)	r{   r?   	HTTPErrorstatus
startswithhttp_status
HTTPStatusFALCON3_has_http_5xx_status)r   r   is_server_erroris_unhandled_errors       r   r   r      s     V%5%56 BIIO;W;W<O (
Vv11<<=  11 5+H5r    c                 8    U R                   R                  S5      $ )Nr   )r   r   )r   s    r   r   r      s    ??%%c**r    c                 `    UR                   UR                  S.nX1   U S'   S[        U   0U S'   g )NrQ   transactionsourcetransaction_info)rR   rS   r   )r   r[   r   name_for_styles       r    _set_transaction_name_and_sourcer      sA      ,,N *<E-!)+;<M+N OE
r    c                    ^ ^ UU 4S jnU$ )Nc                    > [        U TR                  T5        [        5          [        T5      R	                  U 5        S S S 5        U $ ! , (       d  f       U $ = fr   )r   r[   r	   r   extract_into_event)r   r   rL   rH   s     r   event_processor6_make_request_event_processor.<locals>.event_processor  sJ    (0M0MsS(*"3'::5A +  +* s   A
Ar%   )rH   rL   r   s   `` r   rG   rG     s     r    )3r@   sentry_sdk.integrationsr   r   r   $sentry_sdk.integrations._wsgi_commonr   sentry_sdk.integrations.wsgir   sentry_sdk.tracingr   sentry_sdk.utilsr	   r
   r   r   typingr   r   r   r   sentry_sdk._typesr   r   r?   r   r_   ImportErrorfalcon.app_helpersapp_helpersr   Apprv   r   falcon.api_helpersapi_helpersAPIr2   falcon.requestr   r   r<   rY   rC   r`   ra   rb   r   r   r   rG   r%   r    r   <module>r      s#    U U A = /  !7
/4''NzzG 
	$	&: 
'.- .bS S 4 $ $68(#ILJ.&+
PO  /
-
../  ''NzzG 
'	&s*   
C  C' DC$'$DD
D