
    fi&                        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% n# e&$ r  ed          w xY w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j2        d             Z3 ee1          d             Z4d Z5 G d de          Z6dS )    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    e Zd ZdZde Zed             ZdS )TornadoIntegrationtornadoz
auto.http.c                  T   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          _        d S )NzUThe tornado integration for Sentry requires Python 3.7+ or the aiocontextvars packageztornado.accessc                 ~   K   t          |           5   | g|R i | d {V cd d d            S # 1 swxY w Y   d S N_handle_request_impl)selfargskwargsold_executes      o/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/sentry_sdk/integrations/tornado.pysentry_execute_request_handlerzETornadoIntegration.setup_once.<locals>.sentry_execute_request_handlerG   s      )$// D D!,T!CD!C!C!CF!C!CCCCCCCD D D D D D D D D D D D D D D D D Ds   266c              ?      K   t          |           5   | g|R i |E d {V }|cd d d            S # 1 swxY w Y   d S r&   r'   )r)   r*   r+   resultr,   s       r-   r.   zETornadoIntegration.setup_once.<locals>.sentry_execute_request_handlerN   s       *$// " "(3D(J4(J(J(J6(J(JJJJJJJF!" " " " " " " " " " " " " " " " " "s   488c                 D    t          |||            | |||g|R 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JJJ6J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CC# 	 g+,  
 	&'''$-'44	 	"D D D D D D " " " " Y" #A*8	K 	K 	K 	K 	K
 (<$$$r8   N)__name__
__module____qualname__
identifieroriginstaticmethodr=    r8   r-   r"   r"   -   s?        J&*&&F,< ,< \,< ,< ,<r8   r"   c              #   J  K   t          j                                        t                    }|d V  t	          j        |           }t          j                    5 }| j        j        }|	                                 t          |          }|                    |           t          |t          j        dt          j        t          j                  }t          j        |d| j        i          5  d V  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )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MMK;t$$L		#	%	% ,&!!!),77	!!),,,$~
 +$*%,

 

 

 )2CT\1R
 
 
 	 	 EEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	'                 s7   BD/D 4D D	DD	DDDc                     t          |t                    rd S t          | ||ft          j                    j        ddd          \  }}t          j        ||           d S )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$77  KE4 U......r8   c                       fd}|S )Nc                 L                }|| S |j         }t                      5  t          ||j         j                                                  }t          |          pd| d<   dt          j        i| d<   d d d            n# 1 swxY w Y   t                      5  t          |          }|	                    |            | d         }|j
        d|j        |j        |d<   |j        |d<   |j        |d	<   d
|j        i|d<   t          t!          |j                            |d<   d d d            n# 1 swxY w Y   t                      5  |j        r8t'                      r*|                     di                               dd           d d d            n# 1 swxY w Y   | S )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 	PWgo&<&B&B&D&DEEF#<V#D#D#JE- )13D3N(OE$%	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P
 )** 	M 	M/88I((/// +L    #L ,3=L(%,^L"#0'2C"DL&5d7?6K6K&L&LL#	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M" )** 	R 	R# R(?(A(A R  ,,778JDQQQ	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R s8   ABB
BBD44D8;D8A FF FrD   )rZ   r   s   ` r-   rT   rT      s%    " " " " "H r8   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	rv   c                 P    | j         j        dS t          | j         j                  S )Nr   )rQ   bodylenr)   s    r-   content_lengthz&TornadoRequestExtractor.content_length   s%    <$14<$%%%r8   c                 R    d | j         j                                        D             S )Nc                 $    i | ]\  }}||j         S rD   )r4   .0kvs      r-   
<dictcomp>z3TornadoRequestExtractor.cookies.<locals>.<dictcomp>   s     DDDtq!17DDDr8   )rQ   cookiesitemsr   s    r-   r   zTornadoRequestExtractor.cookies   s'    DDt|';'A'A'C'CDDDDr8   c                     | j         j        S r&   )rQ   r   r   s    r-   raw_dataz TornadoRequestExtractor.raw_data   s    |  r8   c                 R    d | j         j                                        D             S )Nc                 .    i | ]\  }}|d  |D             S )c                 :    g | ]}|                     d d          S )latin1replace)decode)r   r   s     r-   
<listcomp>z;TornadoRequestExtractor.form.<locals>.<dictcomp>.<listcomp>   s&    :::!9--:::r8   rD   )r   r   vss      r-   r   z0TornadoRequestExtractor.form.<locals>.<dictcomp>   s=     
 
 
2 ::r:::
 
 
r8   )rQ   body_argumentsr   r   s    r-   formzTornadoRequestExtractor.form   s4    
 
4::<<
 
 
 	
r8   c                 Z    t          | j        j                            d                    S )Nzcontent-type)r   rQ   rR   getr   s    r-   is_jsonzTornadoRequestExtractor.is_json   s#    $T\%9%=%=n%M%MNNNr8   c                 R    d | j         j                                        D             S )Nc                 *    i | ]\  }}|||d          S )r   rD   r   s      r-   r   z1TornadoRequestExtractor.files.<locals>.<dictcomp>   s'    DDDDAq!D1Q4DDDr8   )rQ   filesr   r   s    r-   r   zTornadoRequestExtractor.files   s'    DDDL$6$<$<$>$>DDDDr8   c                 .    t          |j        pd          S )NrD   )r   r   )r)   files     r-   size_of_filez$TornadoRequestExtractor.size_of_file   s    49?###r8   N)
r>   r?   r@   r   r   r   r   r   r   r   rD   r8   r-   rv   rv      s        & & &E E E! ! !
 
 
O O OE E 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 4 4 4 4 4 0 0 0 0 0 0                V U U U U U U U U U         
 : 9 9 9 9 9077777755555555%%%%%%% 0 0 0
,.
/
//0 !           8      777777771< 1< 1< 1< 1< 1< 1< 1<h   D ./// / 0//& & &R $  $  $  $  $.  $  $  $  $  $s   A+ +A<