
    lh&                        d dl Z d dlZd dlmZ d dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZmZmZmZmZ d dlmZmZmZ d d	lmZmZmZ d d
lmZ 	 d dlmZ  d dl!m"Z"m#Z# d dl$m%Z% d dl'm(Z( e(r&d dl'm)Z) d dl'm*Z* d dl'm+Z+ d dl'm,Z, d dl'm-Z- d dl.m/Z/m0Z0  G d de      Z1ejd                  d        Z3 ee1      d        Z4d Z5 G d de      Z6y# e&$ r	  ed      w xY w)    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                   *    e Zd ZdZde Zed        Zy)TornadoIntegrationtornadoz
auto.http.c                  .   t        t        t               t        st	        dt
        z         t        d       t        j                  t              } | rfd}nt        fd       }|t        _        t        j                  fd}|t        _        y )NzUThe tornado integration for Sentry requires Python 3.7+ or the aiocontextvars packageztornado.accessc                 z   K   t        |       5   | g|i | d {   cd d d        S 7 # 1 sw Y   y xY wwN_handle_request_impl)selfargskwargsold_executes      q/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/sentry_sdk/integrations/tornado.pysentry_execute_request_handlerzETornadoIntegration.setup_once.<locals>.sentry_execute_request_handlerG   sF     )$/ D!,T!CD!CF!CCD DCD Ds    ;/-/
;/8;c              ?   ~   K   t        |       5   | g|i |E d {   }|cd d d        S 7 # 1 sw Y   y xY wwr&   r'   )r)   r*   r+   resultr,   s       r-   r.   zETornadoIntegration.setup_once.<locals>.sentry_execute_request_handlerN   sH      *$/ "(3D(J4(J6(JJF!" "J" "s    =1/1
=1:=c                 <    t        |||        | |||g|i |S r&   )_capture_exception)r)   tyvaluetbr*   r+   old_log_exceptions         r-   sentry_log_exceptionz;TornadoIntegration.setup_once.<locals>.sentry_log_exceptionY   s*    r5"-$T2ubJ4J6JJ    )r   r"   TORNADO_VERSIONr   r   r	   r   r   _executer   r   log_exception)	awaitabler.   r7   r,   r6   s      @@r-   
setup_oncezTornadoIntegration.setup_once1   s     	1?C# g+, 
 	&'$--'4	D " " #A*88	K
 (<$r8   N)__name__
__module____qualname__
identifieroriginstaticmethodr=    r8   r-   r"   r"   -   s%    J*&F,< ,<r8   r"   c              #   R  K   t        j                         j                  t              }|d  t	        j
                  |       }t        j                         5 }| j                  j                  }|j                          t        |      }|j                  |       t        |t        j                  dt        j                   t        j"                        }t        j$                  |d| j                  i      5  d  d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY ww)Nzgeneric Tornado request)opnamesourcerB   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   ROUTErB   start_transaction)r)   integrationweak_handlerscoperR   	processortransactions          r-   r(   r(   a   s      '')99:LMK;;t$L		#	#	% ,,&&!),7	!!),$~~
 +$**%,,

 ))2CT\\1R
 	 	' &	 	' s7   AD'B D9D>D	D'D	DD$ D'c                     t        |t              ry t        | ||ft        j                         j
                  ddd      \  }}t        j                  ||       y )Nr#   F)typehandled)client_options	mechanism)hint)
isinstancer   r   rK   rL   optionscapture_event)r3   r4   r5   eventrc   s        r-   r2   r2      sT     %#&	UB!,,.66$7KE4 U.r8   c                       fd}|S )Nc                 D           }|| S |j                   }t               5  t        ||j                   j                  j	                               }t        |      xs d| d<   dt        j                  i| d<   d d d        t               5  t        |      }|j                  |        | d   }|j                  d|j                  |j                  |d<   |j                  |d<   |j                  |d	<   d
|j                  i|d<   t        t!        |j"                              |d<   d d d        t               5  |j$                  r,t'               r"| j)                  di       j)                  dd       d d d        | S # 1 sw Y   xY w# 1 sw Y   cxY w# 1 sw Y   | S xY w)N r]   rH   transaction_inforQ   z://urlquery_stringmethodREMOTE_ADDRenvrR   useris_authenticatedT)rQ   r   getattrrn   lowerr   r   	COMPONENTTornadoRequestExtractorextract_into_eventprotocolhostpathquery	remote_ipr   dictrR   current_userr   
setdefault)rg   rc   handlerrQ   rn   	extractorrequest_inforZ   s          r-   tornado_processorz0_make_event_processor.<locals>.tornado_processor   s   .?L//(* 	PWgoo&<&<&B&B&DEF#<V#D#JE- )13D3N3N(OE$%	P
 )* 	M/8I((/ +L   #L ,3==L(%,^^L"#0'2C2C"DL&5d7??6K&LL#	M" )* 	R##(?(A  ,778JDQ	R 5	P 	P
	M 	M"	R s%   AE<BF	99F<F	FFrD   )rZ   r   s   ` r-   rT   rT      s    "H r8   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	rv   c                 n    | j                   j                  yt        | j                   j                        S Nr   )rQ   bodylenr)   s    r-   content_lengthz&TornadoRequestExtractor.content_length   s*    <<$4<<$$%%r8   c                     | j                   j                  j                         D ci c]  \  }}||j                   c}}S c c}}w r&   )rQ   cookiesitemsr4   r)   kvs      r-   r   zTornadoRequestExtractor.cookies   s5    '+||';';'A'A'CDtq!177
DDDs   Ac                 .    | j                   j                  S r&   )rQ   r   r   s    r-   raw_dataz TornadoRequestExtractor.raw_data   s    ||   r8   c                     | j                   j                  j                         D ci c]&  \  }}||D cg c]  }|j                  dd       c}( c}}}S c c}w c c}}}w )Nlatin1replace)rQ   body_argumentsr   decode)r)   r   vsr   s       r-   formzTornadoRequestExtractor.form   s^     44::<
 
2 r:!9-::
 	
:
s   AAAAc                 ^    t        | j                  j                  j                  d            S )Nzcontent-type)r   rQ   rR   getr   s    r-   is_jsonzTornadoRequestExtractor.is_json   s"    $T\\%9%9%=%=n%MNNr8   c                     | j                   j                  j                         D ci c]  \  }}|s	||d    c}}S c c}}w r   )rQ   filesr   r   s      r-   r   zTornadoRequestExtractor.files   s7    $(LL$6$6$<$<$>DDAq!1Q4DDDs   
??c                 4    t        |j                  xs d      S )NrD   )r   r   )r)   files     r-   size_of_filez$TornadoRequestExtractor.size_of_file   s    499?##r8   N)
r>   r?   r@   r   r   r   r   r   r   r   rD   r8   r-   rv   rv      s(    &E!
OE$r8   rv   )7rN   
contextlibinspectr   rK   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   r9   tornado.webr   r   tornado.genr   ImportErrortypingr   r   r   r   r   r   sentry_sdk._typesr   r    r"   contextmanagerr(   r2   rT   rv   rD   r8   r-   <module>r      s      '  )   4 0  V U 
 :075% ! 71< 1<h  D .// 0/&R $.  $}  0
.
//0s   C C 