
    fi2                     "   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m	Z	m
Z
 d dlmZ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mZmZ d d
lmZmZ d dlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* 	 d dl+Z+d dl,m-Z. d dl,m/Z/m0Z0 d dl1m2Z2m3Z3m4Z4 n# e5$ r  ed          w xY wd dl6m7Z7 e7rFd dl8m9Z9 d dl:m;Z; d dl,m<Z<m=Z= d dl>m?Z? d dl@mAZA d dl6mBZB d dl6mCZC d dl6mDZD d dl6mEZE d dlmFZF d dlGmHZHmIZI dZJ G d de          ZKd ZLd  ZMd! ZNd"ZOd# ZPdS )$    N)wraps)continue_trace)OP
SPANSTATUSSPANDATA)$_DEFAULT_FAILED_REQUEST_STATUS_CODES_check_minimum_versionIntegrationDidNotEnable)ignore_logger)track_session)_filter_headersrequest_body_within_bounds)BAGGAGE_HEADER_NAMESOURCE_FOR_STYLETransactionSource)should_propagate_traceadd_http_request_source)capture_internal_exceptionsensure_integration_enabledevent_from_exceptionlogger	parse_urlparse_versionreraisetransaction_from_functionHAS_REAL_CONTEXTVARSCONTEXTVARS_ERROR_MESSAGESENSITIVE_DATA_SUBSTITUTEAnnotatedValue)__version__)ClientSessionTraceConfig)ApplicationHTTPExceptionUrlDispatcherzAIOHTTP not installed)TYPE_CHECKING)Request)UrlMappingMatchInfo)TraceRequestStartParamsTraceRequestEndParams)Set)SimpleNamespace)Any)Optional)Tuple)Union)ExcInfo)EventEventProcessor)handler_namemethod_and_path_patternc                   B    e Zd ZdZde Z	 deddZed             ZdS )	AioHttpIntegrationaiohttpz
auto.http.r5   )failed_request_status_codesc                j    |t           vrt          d|dt           d          || _        || _        d S )Nz%Invalid value for transaction_style: z (must be in ))TRANSACTION_STYLE_VALUES
ValueErrortransaction_style_failed_request_status_codes)selfr?   r:   s      o/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/sentry_sdk/integrations/aiohttp.py__init__zAioHttpIntegration.__init__K   sT     $<<<*$$$&>&>&>@   "3,G)))    c                     t          t                    } t          t          |            t          st          dt          z             t          d           t          j	        fd}|t          _	        t          j        t                    fd            }|t          _        t          j        t          t                    fd            }|t          _        d S )NzSThe aiohttp integration for Sentry requires Python 3.7+  or aiocontextvars package.zaiohttp.serverc           	        K   t          j                                        t                    }| | |g|R i | d {V S t	          j        |          }t          j                    5 }t          |d          5  |                                 |	                                 |
                    t          |                     t          |j                  }t          |t          j        dt"          j        t          j                  }t          j        |d|i          5  	  | |           d {V }	n# t*          $ r<}
|                    |
j                   |
j        |j        v rt3                        d }
~
wt4          j        t8          f$ r! |                    t<          j                    t@          $ r tC          t3                        Y nw xY w	 |	j"        }|                    |           n# tF          $ r Y nw xY w|	cd d d            cd d d            cd d d            S # 1 swxY w Y   	 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 )Nrequest)session_modezgeneric AIOHTTP request)opnamesourceoriginaiohttp_request)custom_sampling_context)$
sentry_sdk
get_clientget_integrationr8   weakrefrefisolation_scoper   generate_propagation_contextclear_breadcrumbsadd_event_processor_make_request_processordictheadersr   r   HTTP_SERVERr   ROUTErL   start_transactionr%   set_http_statusstatus_coder@   _capture_exceptionasyncioCancelledErrorConnectionResetError
set_statusr   	CANCELLED	Exceptionr   statusAttributeError)rA   rG   argskwargsintegrationweak_requestscoperZ   transactionresponseeresponse_status
old_handles               rB   sentry_app_handlez8AioHttpIntegration.setup_once.<locals>.sentry_app_handlem   s     $/11AABTUUK"'ZgGGGGGGGGGGGGG";w//L+-- 5("5yAAA 4( 4( 66888++-----.El.S.STTT"7?33G"0> 70618# # #K $5#1BG0L   #( #(;-7Zg-F-F'F'F'F'F'F'FHH, 	" 	" 	"'77FFF !"#.#K!L !L !3 4 4 4! ' 68LM " " "'22:3GHHH!( ; ; ; $%7%9%9::::;
	I
 /7oO (77HHHH  . ! ! ! D!
  (G#( #( #( #( #( #( #(#4( 4( 4( 4( 4( 4( 4(5( 5( 5( 5( 5( 5( 5( 5($#( #( #( #( #( #( #( #( #(#4( 4( 4( 4( 4( 4( 4( 4( 4( 4( 4( 4( 4( 4( 4(5( 5( 5( 5( 5( 5( 5( 5( 5( 5( 5( 5( 5( 5( 5( 5( 5( 5(s   +I=B)I&H-(D;:H-;
G	7E<	<AG	H-G	H-G7!H-7
H	H-H	H-II-H11I4H15I9II			II		II!$I!c                 2  K    | |           d {V }t          j                                        t                    }||S d }	 |j        dk    rt          |j                  }nd|j        dk    rY|                                }|                    d          p|                    d          }d	                    |j
        |          }n# t          $ r Y nw xY w|8t          j                                        |t          |j                            |S )Nr5   r6   path	formatterz{} {})rK   )rO   rP   rQ   r8   r?   r   handlerget_infogetformatmethodrf   get_current_scopeset_transaction_namer   )rA   rG   rvrk   rJ   
route_infopatternold_urldispatcher_resolves          rB   sentry_urldispatcher_resolvezCAioHttpIntegration.setup_once.<locals>.sentry_urldispatcher_resolve   s6      10w????????B$/11AABTUUK"	D0NBB4RZ@@DD 26OOO!#J(nnV44S
{8S8SG">>'.'BBD    ,..CC+K,IJ D   
 Is   BC 
CCc                      t          |                    d          pd          }t                      }|                    |           ||d<    | i |S )Ntrace_configs )listry   create_trace_configappend)ri   rj   client_trace_configstrace_configold_client_session_inits       rB   initz+AioHttpIntegration.setup_once.<locals>.init   sc     $(

?(C(C(Ir#J#J .00L ''555&:F?#**D;F;;;rD   )r   AIOHTTP_VERSIONr	   r8   r   r   r   r   r$   _handler&   resolver   r"   rC   r   )versionrs   r   r   r   rr   r   s       @@@rB   
setup_oncezAioHttpIntegration.setup_onceZ   s     0017;;;# 	 .0IJ  
 	&''' (
=	( =	( =	( =	( =	(~ 0$1$9!	(	)	)	 	 	 	 
*	)	8 !="/"8	#$68O	P	P	< 	< 	< 	< 
Q	P	< "&rD   N)r5   )	__name__
__module____qualname__
identifierrL   r   rC   staticmethodr   r   rD   rB   r8   r8   G   su        J&*&&F )H %I	H H H H H @& @& \@& @& @&rD   r8   c                      d } d }t                      }|j                            |            |j                            |           |S )Nc                   K   t          j                                        t                    d S |j                                        }d }t                      5  t          t          |j	                  d          }d d d            n# 1 swxY w Y   t          j
        t          j        |d|r|j	        nt          t          j                  }|                    t           j        |           |e|                    d|j	                   |                    t           j        |j                   |                    t           j        |j                   t          j                    }t-          |t          |j	                            rt          j                                        |          D ]\  }}t3          j        d                    |||j	                             |t8          k    r8|j                            t8                    r|j        |xx         d	|z   z  cc<   w||j        |<   ||_        d S )
NF)sanitize )rI   rJ   rL   url)spanzE[Tracing] Adding `{key}` header {value} to outgoing request to {url}.)keyvaluer   ,) rO   rP   rQ   r8   r{   upperr   r   strr   
start_spanr   HTTP_CLIENTr   rL   set_datar   HTTP_METHOD
HTTP_QUERYqueryHTTP_FRAGMENTfragmentr   r|   iter_trace_propagation_headersr   debugrz   r   rZ   ry   r   )	sessiontrace_config_ctxparamsr{   
parsed_urlr   clientr   r   s	            rB   on_request_startz-create_trace_config.<locals>.on_request_start   s      ""223EFFNF$$&&
(** 	D 	D"3vz??UCCCJ	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D $~vvRz~~9RRT%,	
 
 
 	h*F333!MM%000MM(-z/?@@@MM(0*2EFFF&((!&#fj//:: 	0 -//NN O  0 0  [bbu&* c    
 ---&.2D2D'3 3- N3'''3;6''''*/FN3'' $s   $B		BBc                 V  K   |j         d S |j         }|                    t          |j        j                             |                    d|j        j                   |                                 t                      5  t          |           d d d            d S # 1 swxY w Y   d S )Nreason)
r   r^   intro   rg   r   r   finishr   r   )r   r   r   r   s       rB   on_request_endz+create_trace_config.<locals>.on_request_end  s       (F$S!788999h 6777(** 	* 	*#D)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   BB"%B")r#   r   r   r   )r   r   r   s      rB   r   r      sa    -% -% -%^* * * ==L!(()9:::&&~666rD   c                       fd}|S )Nc                 ~                }|| S t                      5  |                     di           }|j        d|j        |j        |d<   |j        |d<   |j        |d<   d|j        i|d<   t          t          |j
                            |d<   t          |          |d	<   d d d            n# 1 swxY w Y   | S )
NrG   z://r   query_stringr{   REMOTE_ADDRenvrZ   data)r   
setdefaultschemehostru   r   r{   remoter   rY   rZ   get_aiohttp_request_data)eventhintrG   request_inforl   s       rB   aiohttp_processorz2_make_request_processor.<locals>.aiohttp_processor'  s)   
 ,..?L(** 	E 	E ++Ir::L #L ,3+?L(%,^L"#0'."AL&5d7?6K6K&L&LL#
 $<G#D#DL #	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E& s   BB22B69B6r   )rl   r   s   ` rB   rX   rX   %  s$        < rD   c                      t          j                    } t          | t          j                    j        ddd          \  }}t          j        ||           | S )Nr9   F)typehandled)client_options	mechanism)r   )sysexc_infor   rO   rP   optionscapture_event)r   r   r   s      rB   r`   r`   H  s_    |~~H&!,..6$77  KE4
 U....OrD   z8[Can't show request body due to implementation details.]c                     | j         }|`t          t          j                    t	          |                    st          j                    S | j        pd}|                    |d          S | j	        rt          S d S )Nzutf-8replace)_read_bytesr   rO   rP   lenr    removed_because_over_size_limitcharsetdecodecan_read_bodyBODY_NOT_READ_MESSAGE)rG   
bytes_bodyencodings      rB   r   r   W  s{    $J)**?*A*A3z??SS 	D!ACCC?-g  9555 %$$ 4rD   )Qr   rR   	functoolsr   rO   sentry_sdk.apir   sentry_sdk.constsr   r   r   sentry_sdk.integrationsr   r	   r
   r   sentry_sdk.integrations.loggingr   sentry_sdk.sessionsr   $sentry_sdk.integrations._wsgi_commonr   r   sentry_sdk.tracingr   r   r   sentry_sdk.tracing_utilsr   r   sentry_sdk.utilsr   r   r   r   r   r   r   r   r   r   r   r    ra   r9   r!   r   r"   r#   aiohttp.webr$   r%   r&   ImportErrortypingr'   aiohttp.web_requestr(   aiohttp.web_urldispatcherr)   r*   r+   collections.abcr,   typesr-   r.   r/   r0   r1   r2   sentry_sdk._typesr3   r4   r=   r8   r   rX   r`   r   r   r   rD   rB   <module>r      s   



            ) ) ) ) ) ) 6 6 6 6 6 6 6 6 6 6            : 9 9 9 9 9 - - - - - -                
 U T T T T T T T                           0NNN66666622222222EEEEEEEEEEE 0 0 0
,.
/
//0 !           8++++++======FFFFFFFF######%%%%%%((((((77777777 G T& T& T& T& T& T& T& T&nD D DN     F	 	 	 S     s   2B B 