
    fi6.                        d dl m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 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 d dlmZ d dlm Z  d dl!m"Z" d dl#m$Z$ n# e%$ r  e	d          w xY wd dl&m'Z' e'r2d dl&m(Z(m)Z)m*Z* d dl+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z4m5Z5m6Z6 d dlm7Z7 d dl8m9Z9m:Z: dZ; G d de
          Z< G d de          Z=d Z>d Z?d Z@d  ZAd! ZB ee<          d"             ZCdS )#    )Set)deepcopyN)OP)$_DEFAULT_FAILED_REQUEST_STATUS_CODESDidNotEnableIntegration)SentryAsgiMiddleware)ignore_logger)should_send_default_pii)TransactionSourceSOURCE_FOR_STYLE)ensure_integration_enabledevent_from_exceptiontransaction_from_function)RequestLitestar)BaseRouteHandler)DefineMiddleware)	HTTPRoute)ConnectionDataExtractor)HTTPExceptionzLitestar is not installed)TYPE_CHECKING)AnyOptionalUnion)ASGIApp)HTTPReceiveMessage	HTTPScopeMessage
MiddlewareReceiveScopeSendWebSocketReceiveMessage)MiddlewareProtocol)EventHintzgeneric Litestar requestc                   @    e Zd ZdZde Zef	 ddZed             ZdS )LitestarIntegrationlitestarz
auto.http.returnNc                     || _         d S )N)failed_request_status_codes)selfr-   s     p/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/sentry_sdk/integrations/litestar.py__init__zLitestarIntegration.__init__8   s     ,G(((    c                  x    t                       t                       t                       t          d           d S )Nr*   )patch_app_initpatch_middlewarespatch_http_route_handler
    r1   r/   
setup_oncezLitestarIntegration.setup_once>   s>     	!!! 	j!!!!!r1   )r+   N)	__name__
__module____qualname__
identifieroriginr   r0   staticmethodr7   r6   r1   r/   r)   r)   4   sj        J&*&&F %IG 
G G G G " " \" " "r1   r)   c                   2     e Zd Zej        f fd	Zd Z xZS )SentryLitestarASGIMiddlewarec                 V    t                                          |ddd|d           d S )NFendpointasgi   )appunsafe_context_datatransaction_stylemechanism_typespan_originasgi_version)superr0   )r.   rD   rH   	__class__s      r/   r0   z%SentryLitestarASGIMiddleware.__init__Q   sB     	 %(!# 	 	
 	
 	
 	
 	
r1   c                     dS )zAvoid catching exceptions from request handlers.

        Those exceptions are already handled in Litestar.after_exception handler.
        We still catch exceptions from application lifespan handlers.
        Nr6   )r.   excs     r/   _capture_request_exceptionz7SentryLitestarASGIMiddleware._capture_request_exception]   s	     	r1   )r8   r9   r:   r)   r<   r0   rN   __classcell__)rK   s   @r/   r?   r?   P   sR        (;(B 

 

 

 

 

 

      r1   r?   c                  x    t           j        t          t                    fd            } | t           _        dS )a\  
    Replaces the Litestar class's `__init__` function in order to inject `after_exception` handlers and set the
    `SentryLitestarASGIMiddleware` as the outmost middleware in the stack.
    See:
    - https://docs.litestar.dev/2/usage/applications.html#after-exception
    - https://docs.litestar.dev/2/usage/middleware/using-middleware.html
    c                     t           g|                    d          pg |d<   |                    d          pg }t          g||d<    | g|R i | d S )Nafter_exception
middleware)exception_handlergetr?   )r.   argskwargsrS   old__init__s       r/   injection_wrapperz)patch_app_init.<locals>.injection_wrapperr   s     %
jj*++1r%
 !
 ZZ--3
 <JzJ|D*4***6*****r1   N)r   r0   r   r)   )rY   rX   s    @r/   r3   r3   g   sM     #K 3[AA	+ 	+ 	+ 	+ BA	+ *Hr1   c                  x    t           j        t          t                    fd            } | t           _        d S )Nc                 .    d  |           D             S )Nc                 ,    g | ]}t          |          S r6   )enable_span_for_middleware).0rS   s     r/   
<listcomp>zIpatch_middlewares.<locals>.resolve_middleware_wrapper.<locals>.<listcomp>   s0     
 
 
 'z22
 
 
r1   r6   )r.   old_resolve_middleware_stacks    r/   resolve_middleware_wrapperz5patch_middlewares.<locals>.resolve_middleware_wrapper   s/    
 
::4@@
 
 
 	
r1   )r   resolve_middlewarer   r)   )ra   r`   s    @r/   r4   r4      sO    #3#F  35QRR
 
 
 
 SR
 +E'''r1   c                    t          | d          r	| t          u r| S t          | t                    r| j        j        n| j        fd}j        dv}|r)t          | t                    r|| j        _        n|| _        | S )N__call__c                 B  K   t          j                                        t                     | |           d {V S | j        j        t          j        t          j        t          j	                  5 }|
                    d           fd}t          dt                              }|dk    }|s|n}fd}	t          dt                              }
|
dk    }|s|	n} | |||           d {V cd d d            S # 1 swxY w Y   d S )Nopnamer<   litestar.middleware_namec            
        K   t          j                                        t                     | i | d {V S t          j        t
          j        t          dt                              t          j	                  5 }|
                    d            | i | d {V cd d d            S # 1 swxY w Y   d S Nr:   rf   ri   )
sentry_sdk
get_clientget_integrationr)   
start_spanr   MIDDLEWARE_LITESTAR_RECEIVEgetattrstrr<   set_tag)rV   rW   spanmiddleware_namereceives      r/   _sentry_receivezNenable_span_for_middleware.<locals>._create_span_call.<locals>._sentry_receive   s"     (**::;NOOW!($!9&!9!99999999*5 .#g,,GG.5   : LL!;_MMM!($!9&!9!9999999: : : : : : : : : : : : : : : : : :s   $B55B9<B9r8   rw   c           
        K   t          j                                        t                     |            d {V S t          j        t
          j        t          dt                              t          j	                  5 }|
                    d            |            d {V cd d d            S # 1 swxY w Y   d S rk   )rl   rm   rn   r)   ro   r   MIDDLEWARE_LITESTAR_SENDrq   rr   r<   rs   )messagert   ru   sends     r/   _sentry_sendzKenable_span_for_middleware.<locals>._create_span_call.<locals>._sentry_send   s     (**::;NOOW!%g.......*2 ~s4yyAA.5   / LL!;_MMM!%g....../ / / / / / / / / / / / / / / / / /s   'B;;B?B?r|   )rl   rm   rn   r)   rK   r8   ro   r   MIDDLEWARE_LITESTARr<   rs   rq   rr   )r.   scoperv   r{   middleware_spanrw   receive_namereceive_patchednew_receiver|   	send_namesend_patchednew_sendru   old_calls     ``         @r/   _create_span_callz5enable_span_for_middleware.<locals>._create_span_call   s      ""223FGGO!$w=========.1"% &-
 
 
 )	F ##$>PPP
: 
: 
: 
: 
: 
: #7JGEEL*.??O1@M//gK
/ 
/ 
/ 
/ 
/ 
/  j#d))<<I$6L+7A||TH!${HEEEEEEEES)	F )	F )	F )	F )	F )	F )	F )	F )	F )	F )	F )	F )	F )	F )	F )	F )	F )	Fs   =B
DDD)r   )hasattrr?   
isinstancer   rS   rd   r8   )rS   r   not_yet_patchedr   s      @r/   r]   r]      s     J
++555*.// '(1&/F /F /F /F /Fb '/DDO 4j"233 	4->J!**"3Jr1   c                  B    t           j        fd} | t           _        d S )Nc                   	K   t          j                                        t                     
| ||           d {V S t          j                    }d                             ||          } t          dd          |                              d          }| d {V 		fd}t          j        |_	        |
                    |            
| ||           d {V S )NrD   )r~   rv   r{   T)
parse_bodyparse_querybodyc                    	                     d          }|                      di           }t          	                     dd                    |d<   t                      rd         |d<   |d<   d }|j        |j        }n)t	          |j        d          r|j        j        }n|j        }|t          |          }d	t          d
         i}|st          }d	t          j        i}|                     t          |          ||d           | S )Nroute_handlerrequest_bodyr1   content_lengthcookiesdatavaluesourcerA   )r   transactiontransaction_info)rU   lenr   rh   r   fnr   r   r   _DEFAULT_TRANSACTION_NAMEr   ROUTEupdater   )
event_r   request_infofunctx_nametx_infoextracted_request_datarequest_datar~   s
          r/   event_processorzHpatch_http_route_handle.<locals>.handle_wrapper.<locals>.event_processor   s.   !IIo66M 99Y33L-07C1H1H-I-IL)*&(( L*@*KY'''3V$D!-',)733 ($'-$'3D99!1*!=>G >3#%6%<=LL'55#*(/    Lr1   )rl   rm   rn   r)   get_isolation_scoperequest_classr   popr;   _nameadd_event_processor)r.   r~   rv   r{   sentry_scoper   r   r   r   r   
old_handles    `      @@r/   handle_wrapperz/patch_http_route_handle.<locals>.handle_wrapper   s<      ""223FGGO#D%$?????????!577,,,5'PT,UU"
!8"
 "
 "

" " &))&11!zzzzzz#	 #	 #	 #	 #	 #	 #	J 1;((999ZeWd;;;;;;;;;r1   )r   handle)r   r   s    @r/   r5   r5      s5    !J6< 6< 6< 6< 6<p &Ir1   c                     |                      d          }t          |t                    r|S t          |d          r|                                S d S )Nuserasdict)rU   r   dictr   r   )r~   
scope_users     r/   retrieve_user_from_scoper     sT    6""J*d## z8$$ #  """4r1   c                    d }t                      rt          |          }|r=t          |t                    r(t	          j                    }|                    |           t          | t                    r=t	          j                    	                    t                    }|| j        |j        vrd S t          | t	          j                    j        t          j        dd          \  }}t	          j        ||           d S )NF)typehandled)client_options	mechanism)hint)r   r   r   r   rl   r   set_userr   rm   rn   r)   status_coder-   r   optionsr;   capture_event)rM   r~   	user_infor   integrationr   r   s          r/   rT   rT   #  s     I   4,U33	 )Z	400 )!577i(((#}%%  +--==>QRR#{'NNNF&!,..6.9eLL  KE4 U......r1   )Dcollections.abcr   copyr   rl   sentry_sdk.constsr   sentry_sdk.integrationsr   r   r   sentry_sdk.integrations.asgir	   sentry_sdk.integrations.loggingr
   sentry_sdk.scoper   sentry_sdk.tracingr   r   sentry_sdk.utilsr   r   r   r*   r   r   litestar.handlers.baser   litestar.middlewarer   litestar.routes.httpr   litestar.data_extractorsr   litestar.exceptionsr   ImportErrortypingr   r   r   r   litestar.types.asgi_typesr   litestar.typesr   r   r   r    r!   r"   LitestarScoper#   r$   r%   sentry_sdk._typesr&   r'   r   r)   r?   r3   r4   r]   r5   r   rT   r6   r1   r/   <module>r      s]                                       
 > = = = = = 9 9 9 9 9 9 4 4 4 4 4 4 B B B B B B B B         4********777777444444......@@@@@@1111111 4 4 4
,2
3
334 !           .++++++++++111111	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 766666--------6 " " " " "+ " " "8    #7   .* * *4E E EF F FR<& <& <&~   /00/ / 10/ / /s   &A- -A>