
    gh'.                        S SK Jr  S SKrS SKJr  S SKJrJrJr  S SK	J
r
  S SKJr  S SKJr  S SKJrJr  S S	KJrJrJr   S S
KJrJr  S SKJr  S SKJr  S SKJr  S SKJ r   S SK!J"r"  S SK$J%r%  \%(       a2  S SK$J&r&J'r'J(r(  S SK)J*r*  S SK+J,r,J-r-J.r.J/r/J0r0J1r2J3r3J4r4  S SKJ5r5  S SK6J7r7J8r8  Sr9 " S S\5      r: " S S\
5      r;S r<S r=S r>S r?S  r@\" \:5      S! 5       rAg! \# a	    \" S5      ef = f)"    )SetN)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                   D    \ rS rSrSrS\ 3r\4 SS jjr\S 5       r	Sr
g)	LitestarIntegration2   litestarz
auto.http.Nc                     Xl         g Nfailed_request_status_codes)selfr.   s     c/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/sentry_sdk/integrations/litestar.py__init__LitestarIntegration.__init__6   s     ,G(    c                  V    [        5         [        5         [        5         [        S5        g )Nr*   )patch_app_initpatch_middlewarespatch_http_route_handler	    r3   r0   
setup_onceLitestarIntegration.setup_once<   s      	! 	j!r3   r-   )returnN)__name__
__module____qualname____firstlineno__
identifieroriginr   r1   staticmethodr9   __static_attributes__r8   r3   r0   r(   r(   2   s>    J*&F %IG 
G " "r3   r(   c                   H   ^  \ rS rSr\R
                  4U 4S jjrS rSrU =r	$ )SentryLitestarASGIMiddlewareN   c           	      *   > [         TU ]  USSSUSS9  g )NFendpointasgi   )appunsafe_context_datatransaction_stylemechanism_typespan_originasgi_version)superr1   )r/   rK   rO   	__class__s      r0   r1   %SentryLitestarASGIMiddleware.__init__O   s)     	 %(!# 	 	
r3   c                     g)zAvoid catching exceptions from request handlers.

Those exceptions are already handled in Litestar.after_exception handler.
We still catch exceptions from application lifespan handlers.
Nr8   )r/   excs     r0   _capture_request_exception7SentryLitestarASGIMiddleware._capture_request_exception[   s     	r3   r8   )
r<   r=   r>   r?   r(   rA   r1   rV   rC   __classcell__)rR   s   @r0   rE   rE   N   s    (;(B(B 

 r3   rE   c                  n   ^ [         R                  m[        [        T5      U4S j5       n U [         l        g)aD  
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                    > [         /UR                  S5      =(       d    / QUS'   UR                  S5      =(       d    / n[        /UQUS'   T" U /UQ70 UD6  g )Nafter_exception
middleware)exception_handlergetrE   )r/   argskwargsr\   old__init__s       r0   injection_wrapper)patch_app_init.<locals>.injection_wrapperp   se     %
jj*+1r%
 !
 ZZ-3
 <JzJ|D*4*6*r3   N)r   r1   r   r(   )rb   ra   s    @r0   r5   r5   e   s5     ##K 3[A	+ B	+ *Hr3   c                  n   ^ [         R                  m[        [        T5      U4S j5       n U [         l        g )Nc                 R   > T" U 5       Vs/ s H  n[        U5      PM     sn$ s  snf r,   )enable_span_for_middleware)r/   r\   old_resolve_middleware_stacks     r0   resolve_middleware_wrapper5patch_middlewares.<locals>.resolve_middleware_wrapper   s4    
 ;4@
@
 'z2@
 	
 
s   $)r   resolve_middlewarer   r(   )rh   rg   s    @r0   r6   r6      s7    #3#F#F  35QR
 S
 +E'r3   c                 B  ^ [        U S5      (       a	  U [        L a  U $ [        U [        5      (       a  U R                  R
                  mOU R
                  mU4S jnTR                  S;  nU(       a-  [        U [        5      (       a  XR                  l        U $ Xl        U $ )N__call__c                 P  >^^^#    [         R                  " 5       R                  [        5      c  T" XTT5      I S h  vN $ U R                  R
                  m[         R                  " [        R                  T[        R                  S9 nUR                  ST5        UU4S jn[        TS[        T5      5      nUS:H  nU(       d  UOTnUU4S jn	[        TS[        T5      5      n
U
S:H  nU(       d  U	OTnT" XX5      I S h  vN sS S S 5        $  N N! , (       d  f       g = f7f)NopnamerA   litestar.middleware_namec            
        >#    [         R                  " 5       R                  [        5      c  T" U 0 UD6I S h  vN $ [         R                  " [
        R                  [        TS[        T5      5      [        R                  S9 nUR                  ST5        T" U 0 UD6I S h  vN sS S S 5        $  Nv N! , (       d  f       g = f7fNr>   rn   rq   )
sentry_sdk
get_clientget_integrationr(   
start_spanr   MIDDLEWARE_LITESTAR_RECEIVEgetattrstrrA   set_tag)r_   r`   spanmiddleware_namereceives      r0   _sentry_receiveNenable_span_for_middleware.<locals>._create_span_call.<locals>._sentry_receive   s     ((*::;NOW!($!9&!999**55 .#g,G.55 LL!;_M!($!9&!99  : : :   5CB/A
CB3!B1"B3%C1B33
C=Cr<   r   c           
        >#    [         R                  " 5       R                  [        5      c  T" U 5      I S h  vN $ [         R                  " [
        R                  [        TS[        T5      5      [        R                  S9 nUR                  ST5        T" U 5      I S h  vN sS S S 5        $  Nv N! , (       d  f       g = f7frs   )rt   ru   rv   r(   rw   r   MIDDLEWARE_LITESTAR_SENDry   rz   rA   r{   )messager|   r}   sends     r0   _sentry_sendKenable_span_for_middleware.<locals>._create_span_call.<locals>._sentry_send   s     ((*::;NOW!%g..**22 ~s4yA.55 LL!;_M!%g.  / / r   r   )rt   ru   rv   r(   rR   r<   rw   r   MIDDLEWARE_LITESTARrA   r{   ry   rz   )r/   scoper~   r   middleware_spanr   receive_namereceive_patchednew_receiver   	send_namesend_patchednew_sendr}   old_calls     ``         @r0   _create_span_call5enable_span_for_middleware.<locals>._create_span_call   s      "223FGO!$w===..11""%% &--
 ##$>P
: #7JGEL*.??O1@/gK
/  j#d)<I$6L+7|TH!${EES
 
 >X FS
 
s;   7D&DAD&
A9DDDD&D
D#D&)r   )hasattrrE   
isinstancer   r\   rl   r<   )r\   r   not_yet_patchedr   s      @r0   rf   rf      s     J
++55*.//((11&&/Fb ''/DDOj"233->!!*  #4r3   c                  H   ^ [         R                  mU4S jn U [         l        g )Nc                   >^^^	#    [         R                  " 5       R                  [        5      c  T
" U TX#5      I S h  vN $ [         R                  " 5       nTS   R                  TX#S9n[        SSS9" U5      mTR                  S5      nUI S h  vN m	UU	U4S jn[        R                  Ul	        UR                  U5        T
" U TX#5      I S h  vN $  N NF N7f)NrK   )r   r~   r   T)
parse_bodyparse_querybodyc                   > T	R                  S5      nU R                  S0 5      n[        T	R                  SS5      5      US'   [        5       (       a  TS   US'   Tb  TUS'   S nUR                  b  UR                  nO>[	        UR
                  S5      (       a  UR
                  R                  nOUR
                  nUb  [        U5      nS	[        S
   0nW(       d  [        nS	[        R                  0nU R                  UUUS.5        U $ )Nroute_handlerrequest_bodyr3   content_lengthcookiesdatavaluesourcerH   )r   transactiontransaction_info)r^   lenr
   rp   r   fnr   r   r   _DEFAULT_TRANSACTION_NAMEr   ROUTEupdate)
event_r   request_infofunctx_nametx_infoextracted_request_datarequest_datar   s
          r0   event_processorHpatch_http_route_handle.<locals>.handle_wrapper.<locals>.event_processor   s	   !IIo6M 99Y3L-07C1H-IL)*&((*@*KY'''3V$D!!-',,))733$''--$''3D9!1*!=>G3#%6%<%<=LL+#*(/ Lr3   )rt   ru   rv   r(   get_isolation_scoperequest_classr   popr@   _nameadd_event_processor)r/   r   r~   r   sentry_scoper   r   r   r   r   
old_handles    `      @@r0   handle_wrapper/patch_http_route_handle.<locals>.handle_wrapper   s       "223FGO#D%???!557,,, - 
 "9"

" &))&1!z#	J 1;;((9eW;;;k @ "T <s4   7CCACC?CCCCC)r   handle)r   r   s    @r0   r7   r7      s    !!J8<t &Ir3   c                     U R                  S5      n[        U[        5      (       a  U$ [        US5      (       a  UR	                  5       $ g )Nuserasdict)r^   r   dictr   r   )r   
scope_users     r0   retrieve_user_from_scoper     sB    6"J*d##z8$$  ""r3   c                    S n[        5       (       a  [        U5      nU(       a;  [        U[        5      (       a&  [        R
                  " 5       nUR                  U5        [        U [        5      (       aF  [        R                  " 5       R                  [        5      nUb  U R                  UR                  ;  a  g [        U [        R                  " 5       R                  [        R                  SS.S9u  pV[        R                   " XVS9  g )NF)typehandled)client_options	mechanism)hint)r
   r   r   r   rt   r   set_userr   ru   rv   r(   status_coder.   r   optionsr@   capture_event)rU   r   	user_infor   integrationr   r   s          r0   r]   r]   #  s     I  ,U3	Z	400!557i(#}%% ++-==>QR#{'N'NN&!,,.66.99eLKE U.r3   )Bcollections.abcr   rt   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(   rE   r5   r6   rf   r7   r   r]   r8   r3   r0   <module>r      s        
 > 9 4 B 4*74.@1 !++1	 	 	 7-6 "+ "8#7 .*4EFR>&B /0/ 1/U  4
2
334s    &C C*