
    fi?)                        d dl mZ d dlZd dlmZ d dl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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 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(m)Z)m*Z* d dl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z4m5Z5m6Z6 d dlm7Z7 d dl8m9Z9 dZ: G d de          Z; G d de	          Z<d Z=d Z>d Z?d Z@d ZA ee;          d              ZBdS )!    )deepcopyN)OP)DidNotEnableIntegration)SentryAsgiMiddleware)should_send_default_pii)SOURCE_FOR_STYLETransactionSource)ensure_integration_enabledevent_from_exceptiontransaction_from_function)RequestStarliteState)BaseRouteHandler)DefineMiddleware)get_plugin_for_value)	HTTPRoute)ConnectionDataExtractoris_async_callableRef)	BaseModelzStarlite is not installed)TYPE_CHECKING)AnyOptionalUnion)
ASGIAppHintHTTPReceiveMessage	HTTPScopeMessage
MiddlewareReceiveScopeSendWebSocketReceiveMessage)MiddlewareProtocol)Eventzgeneric Starlite requestc                   2    e Zd ZdZde Zed             ZdS )StarliteIntegrationstarlitez
auto.http.c                  Z    t                       t                       t                       d S )N)patch_app_initpatch_middlewarespatch_http_route_handle     p/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/sentry_sdk/integrations/starlite.py
setup_oncezStarliteIntegration.setup_once5   s.     	!!!!!r1   N)__name__
__module____qualname__
identifieroriginstaticmethodr3   r0   r1   r2   r*   r*   1   s?        J&*&&F" " \" " "r1   r*   c                   ,     e Zd Zej        f fd	Z xZS )SentryStarliteASGIMiddlewarec                 V    t                                          |ddd|d           d S )NFendpointasgi   )appunsafe_context_datatransaction_stylemechanism_typespan_originasgi_version)super__init__)selfr@   rD   	__class__s      r2   rG   z%SentryStarliteASGIMiddleware.__init__>   s@     %(!# 	 	
 	
 	
 	
 	
r1   )r4   r5   r6   r*   r8   rG   __classcell__)rI   s   @r2   r;   r;   =   sC        (;(B 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
r1   r;   c                  x    t           j        t          t                    fd            } | t           _        dS )a  
    Replaces the Starlite class's `__init__` function in order to inject `after_exception` handlers and set the
    `SentryStarliteASGIMiddleware` as the outmost middleware in the stack.
    See:
    - https://starlite-api.github.io/starlite/usage/0-the-starlite-app/5-application-hooks/#after-exception
    - https://starlite-api.github.io/starlite/usage/7-middleware/0-middleware-intro/
    c                     |                     dg           }|                    t          gt          |t                    r|n|g           |                    d          pg }t          g||d<    | g|R i | d S )Nafter_exception)rM   
middleware)popupdateexception_handler
isinstancelistgetr;   )rH   argskwargsrM   rN   old__init__s        r2   injection_wrapperz)patch_app_init.<locals>.injection_wrapperU   s     !**%6;;! "/488+OO)* 	 		
 		
 		
 ZZ--3
 <JzJ|D*4***6*****r1   N)r   rG   r   r*   )rX   rW   s    @r2   r-   r-   J   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 r0   )enable_span_for_middleware).0rN   s     r2   
<listcomp>zIpatch_middlewares.<locals>.resolve_middleware_wrapper.<locals>.<listcomp>r   s0     
 
 
 'z22
 
 
r1   r0   )rH   old_resolve_middleware_stacks    r2   resolve_middleware_wrapperz5patch_middlewares.<locals>.resolve_middleware_wrappero   s/    
 
::4@@
 
 
 	
r1   )r   resolve_middlewarer   r*   )r`   r_   s    @r2   r.   r.   k   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namer8   starlite.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 Nr6   re   rh   )
sentry_sdk
get_clientget_integrationr*   
start_spanr   MIDDLEWARE_STARLITE_RECEIVEgetattrstrr8   set_tag)rU   rV   spanmiddleware_namereceives      r2   _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r4   rv   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 rj   )rk   rl   rm   r*   rn   r   MIDDLEWARE_STARLITE_SENDrp   rq   r8   rr   )messagers   rt   sends     r2   _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{   )rk   rl   rm   r*   rI   r4   rn   r   MIDDLEWARE_STARLITEr8   rr   rp   rq   )rH   scoperu   rz   middleware_spanrv   receive_namereceive_patchednew_receiver{   	send_namesend_patchednew_sendrt   old_calls     ``         @r2   _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;   rR   r   rN   rc   r4   )rN   r   not_yet_patchedr   s      @r2   r\   r\   z   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 )Nr@   )r}   ru   rz   T)
parse_bodyparse_querybodyc                 "   	                     d          }|                      di           }t          	                     dd                    |d<   t                      rd         |d<   |d<   d }|j        |j        }n.t	          |j        t                    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sourcer=   )r   transactiontransaction_info)rT   lenr   rg   rR   fnr   valuer   r	   _DEFAULT_TRANSACTION_NAMEr
   ROUTErP   r   )
event_r   request_infofunctx_nametx_infoextracted_request_datarequest_datar}   s
          r2   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!-',M,c22 ($'-$'3D99!1*!=>G >3#%6%<=LL'55#*(/    Lr1   )rk   rl   rm   r*   get_isolation_scoperequest_classr   rO   r7   _nameadd_event_processor)rH   r}   ru   rz   sentry_scoper   r   r   r   r   
old_handles    `      @@r2   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"	 "	 "	 "	 "	 "	 "	H 1;((999ZeWd;;;;;;;;;r1   )r   handle)r   r   s    @r2   r/   r/      s5    !J5< 5< 5< 5< 5<n &Ir1   c                 t   |                      d          }|sd S t          |t                    r|S t          |t                    r|                                S t	          |d          r|                                S t          |          }|r)t          |j                  s|                    |          S d S )Nuserasdict)	rT   rR   dictr   r   r   r   r   to_dict)r}   
scope_userplugins      r2   retrieve_user_from_scoper     s    6""J t*d## *i(( !   z8$$ #  """!*--F *'77 *~~j)))4r1   c                 ^   d }t                      rt          |          }|r=t          |t                    r(t	          j                    }|                    |           t          | t	          j                    j	        t          j        dd          \  }}t	          j        ||           d S )NF)typehandled)client_options	mechanism)hint)r   r   rR   r   rk   r   set_userr   rl   optionsr*   r7   capture_event)excr}   r   	user_infor   r   r   s          r2   rQ   rQ     s     I   4,U33	 )Z	400 )!577i(((&!,..6.9eLL  KE4 U......r1   )Ccopyr   rk   sentry_sdk.constsr   sentry_sdk.integrationsr   r   sentry_sdk.integrations.asgir   sentry_sdk.scoper   sentry_sdk.tracingr	   r
   sentry_sdk.utilsr   r   r   r+   r   r   r   starlite.handlers.baser   starlite.middlewarer   starlite.plugins.baser   starlite.routes.httpr   starlite.utilsr   r   r   pydanticr   ImportErrortypingr   r   r   r   starlite.typesr   r   r   r    r!   r"   r#   r$   StarliteScoper%   r&   r'   sentry_sdk._typesr(   r   r*   r;   r-   r.   r\   r/   r   rQ   r0   r1   r2   <module>r      s@                         = = = = = = = = = = = = = = 4 4 4 4 4 4 B B B B B B B B         	41111111111777777444444::::::......NNNNNNNNNN""""""" 4 4 4
,2
3
334 !           (++++++++++                        ,+++++'''''' 7 	" 	" 	" 	" 	"+ 	" 	" 	"

 

 

 

 

#7 

 

 

* * *BE E EF F FR;& ;& ;&|  & /00/ / 10/ / /s   2A+ +A<