
    gh&                        S SK r S SKrS SKJr  S SKrS SK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JrJr  S SKJrJrJ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"J#r#  S SK$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,  S SK'J-r-  S SK.J/r/J0r0   " S S\5      r1\Rd                  S 5       r3\" \15      S 5       r4S r5 " S S\5      r6g! \& a	    \" S5      ef = f)    N)iscoroutinefunction)continue_trace)OP)should_send_default_pii)TransactionSource)HAS_REAL_CONTEXTVARSCONTEXTVARS_ERROR_MESSAGEensure_integration_enabledevent_from_exceptioncapture_internal_exceptionstransaction_from_function)_check_minimum_versionIntegrationDidNotEnable)RequestExtractor_filter_headers_is_json_content_type)ignore_logger)version_info)RequestHandler	HTTPError)	coroutinezTornado not installed)TYPE_CHECKING)Any)Optional)Dict)Callable)	Generator)EventEventProcessorc                   2    \ rS rSrSrS\ 3r\S 5       rSrg)TornadoIntegration-   tornadoz
auto.http.c                  H  ^^ [        [        [        5        [        (       d  [	        S[
        -   5      e[        S5        [        R                  m[        T5      n U (       a  U4S jnO[        U4S j5       nU[        l        [        R                  mU4S jnU[        l        g )NzUThe tornado integration for Sentry requires Python 3.7+ or the aiocontextvars packageztornado.accessc                    >#    [        U 5         T" U /UQ70 UD6I S h  vN sS S S 5        $  N! , (       d  f       g = f7fN_handle_request_impl)selfargskwargsold_executes      b/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/sentry_sdk/integrations/tornado.pysentry_execute_request_handlerETornadoIntegration.setup_once.<locals>.sentry_execute_request_handlerG   s6     )$/!,T!CD!CF!CC 0/C 0/s#   A /-/
A /
=A c              ?      >#    [        U 5         T" U /UQ70 UD6 S h  vN nUsS S S 5        $  N! , (       d  f       g = f7fr'   r(   )r*   r+   r,   resultr-   s       r.   r/   r0   N   s=      *$/(3D(J4(J6(JJF! 0/J 0/s#   A1/1
A1
?Ac                 6   > [        XU5        T" XX#/UQ70 UD6$ r'   )_capture_exception)r*   tyvaluetbr+   r,   old_log_exceptions         r.   sentry_log_exception;TornadoIntegration.setup_once.<locals>.sentry_log_exceptionY   s$    r"-$TuJ4J6JJ    )r   r"   TORNADO_VERSIONr   r   r	   r   r   _executer   r   log_exception)	awaitabler/   r9   r-   r8   s      @@r.   
setup_onceTornadoIntegration.setup_once1   s     	1?C## g+, 
 	&'$--'4	D " " #A*88	K
 (<$r;    N)	__name__
__module____qualname____firstlineno__
identifieroriginstaticmethodr@   __static_attributes__rB   r;   r.   r"   r"   -   s%    J*&F,< ,<r;   r"   c           	   #   d  #    [         R                  " 5       R                  [        5      nUc  S v   [        R
                  " U 5      n[         R                  " 5        nU R                  R                  nUR                  5         [        U5      nUR                  U5        [        U[        R                  S[        R                   [        R"                  S9n[         R$                  " USU R                  0S9   S v   S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f7f)Nzgeneric Tornado request)opnamesourcerH   tornado_request)custom_sampling_context)
sentry_sdk
get_clientget_integrationr"   weakrefrefisolation_scoperequestheadersclear_breadcrumbs_make_event_processoradd_event_processorr   r   HTTP_SERVERr   ROUTErH   start_transaction)r*   integrationweak_handlerscoperX   	processortransactions          r.   r)   r)   a   s      '')99:LMK;;t$L		#	#	%,,&&!),7	!!),$~~
 +$**%,,

 ))2CT\\1R
 
' 
&	%&
 
' 
&	%s7   AD0BD8D=D	D0
D	D
D-)D0c                     [        U[        5      (       a  g [        XU4[        R                  " 5       R
                  SSS.S9u  p4[        R                  " X4S9  g )Nr$   F)typehandled)client_options	mechanism)hint)
isinstancer   r   rQ   rR   optionscapture_event)r5   r6   r7   eventri   s        r.   r4   r4      sQ     %##&	B!,,.66$7KE U.r;   c                    ^  U 4S jnU$ )Nc                   > T" 5       nUc  U $ UR                   n[        5          [        X"R                   R                  R	                  5       5      n[        U5      =(       d    SU S'   S[        R                  0U S'   S S S 5        [        5          [        U5      nUR                  U 5        U S   nUR                  < SUR                  < UR                  < 3US'   UR                  US'   UR                  US	'   S
UR                  0US'   [        [!        UR"                  5      5      US'   S S S 5        [        5          UR$                  (       a1  ['        5       (       a"  U R)                  S0 5      R)                  SS5        S S S 5        U $ ! , (       d  f       GN= f! , (       d  f       Nw= f! , (       d  f       U $ = f)N rc   rN   transaction_inforW   z://urlquery_stringmethodREMOTE_ADDRenvrX   useris_authenticatedT)rW   r   getattrrt   lowerr   r   	COMPONENTTornadoRequestExtractorextract_into_eventprotocolhostpathquery	remote_ipr   dictrX   current_userr   
setdefault)rm   ri   handlerrW   rt   	extractorrequest_infor`   s          r.   tornado_processor0_make_event_processor.<locals>.tornado_processor   su   .?L//(*Woo&<&<&B&B&DEF#<V#D#JE- )13D3N3N(OE$% +
 )*/8I((/ +L   #L ,3==L(%,^^L"#0'2C2C"DL&5d7??6K&LL# +" )*##(?(A(A  ,778JDQ + 5 +*
 +*" +* s&   AFBF AF1
F 
F.1
G rB   )r`   r   s   ` r.   rZ   rZ      s    "H r;   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)r|      c                 p    U R                   R                  c  g[        U R                   R                  5      $ Nr   )rW   bodylenr*   s    r.   content_length&TornadoRequestExtractor.content_length   s*    <<$4<<$$%%r;   c                     U R                   R                  R                  5        VVs0 s H  u  pXR                  _M     snn$ s  snnf r'   )rW   cookiesitemsr6   r*   kvs      r.   r   TornadoRequestExtractor.cookies   s7    '+||';';'A'A'CD'Ctq77
'CDDDs   Ac                 .    U R                   R                  $ r'   )rW   r   r   s    r.   raw_data TornadoRequestExtractor.raw_data   s    ||   r;   c                     U R                   R                  R                  5        VVVs0 s H'  u  pX Vs/ s H  o3R                  SS5      PM     sn_M)     snnn$ s  snf s  snnnf )Nlatin1replace)rW   body_argumentsr   decode)r*   r   vsr   s       r.   formTornadoRequestExtractor.form   s^     44::<
< r:r!9-r::<
 	
:
s   A!AA!A!c                 ^    [        U R                  R                  R                  S5      5      $ )Nzcontent-type)r   rW   rX   getr   s    r.   is_jsonTornadoRequestExtractor.is_json   s"    $T\\%9%9%=%=n%MNNr;   c                     U R                   R                  R                  5        VVs0 s H  u  pU(       d  M  XS   _M     snn$ s  snnf r   )rW   filesr   r   s      r.   r   TornadoRequestExtractor.files   s;    $(LL$6$6$<$<$>D$>DA!Q4$>DDDs
   A	Ac                 >    [        UR                  =(       d    S5      $ )NrB   )r   r   )r*   files     r.   size_of_file$TornadoRequestExtractor.size_of_file   s    499?##r;   rB   N)rC   rD   rE   rF   r   r   r   r   r   r   r   rJ   rB   r;   r.   r|   r|      s(    &E!
OE$r;   r|   )7rT   
contextlibinspectr   rQ   sentry_sdk.apir   sentry_sdk.constsr   sentry_sdk.scoper   sentry_sdk.tracingr   sentry_sdk.utilsr   r	   r
   r   r   r   sentry_sdk.integrationsr   r   r   $sentry_sdk.integrations._wsgi_commonr   r   r   sentry_sdk.integrations.loggingr   r$   r   r<   tornado.webr   r   tornado.genr   ImportErrortypingr   r   r   r   r   r   sentry_sdk._typesr   r    r"   contextmanagerr)   r4   rZ   r|   rB   r;   r.   <module>r      s      '  )   4 0  V U 
 :075% ! 71< 1<h  D .// 0/&R $.  $}  0
.
//0s   C C&