Ë
    S>{iy'  ã                   óÄ  — 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 d dlmZ d dlmZmZ d dl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# er0d dl m$Z$m%Z%m&Z&m'Z'm(Z( d dl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 d dlm3Z3 d dl4m5Z5 dZ7 G d„ de«      Z8 G d„ de«      Z9d&d„Z:d&d„Z;d'd„Z<d&d„Z=d(d!„Z>d"e?dd d#d$ddfd%„Z@y# e6$ r	  e
d«      ‚w xY w))é    )ÚTYPE_CHECKING)Ú	BaseModel)ÚOP)ÚHubÚ_should_send_default_pii)ÚDidNotEnableÚIntegration)ÚSentryAsgiMiddleware)ÚSOURCE_FOR_STYLEÚTRANSACTION_SOURCE_ROUTE)Úevent_from_exceptionÚtransaction_from_function)ÚRequestÚStarliteÚState)ÚBaseRouteHandler)ÚDefineMiddleware)Úget_plugin_for_value)Ú	HTTPRoute)ÚConnectionDataExtractorÚis_async_callableÚRef)ÚAnyÚDictÚListÚOptionalÚUnion)	ÚASGIAppÚHTTPReceiveMessageÚ	HTTPScopeÚMessageÚ
MiddlewareÚReceiveÚScopeÚSendÚWebSocketReceiveMessage)ÚMiddlewareProtocol)ÚEventzStarlite is not installedzgeneric Starlite requestc                   ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚSentryStarliteASGIMiddlewarec                 ó,   •— t         ‰| �  |ddd¬«       y )NFÚendpointÚasgi)ÚappÚunsafe_context_dataÚtransaction_styleÚmechanism_type)ÚsuperÚ__init__)Úselfr.   Ú	__class__s     €ú^/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sentry_sdk/integrations/starlite.pyr3   z%SentryStarliteASGIMiddleware.__init__*   s!   ø€ Ü‰ÑØØ %Ø(Ø!ð	 	õ 	
ó    )r.   r   )Ú__name__Ú
__module__Ú__qualname__r3   Ú__classcell__)r5   s   @r6   r*   r*   )   s   ø„ ÷
ñ 
r7   r*   c                   ó"   — e Zd ZdZedd„«       Zy)ÚStarliteIntegrationÚstarliteNc                  ó@   — t        «        t        «        t        «        y ©N)Úpatch_app_initÚpatch_middlewaresÚpatch_http_route_handle© r7   r6   Ú
setup_oncezStarliteIntegration.setup_once6   s   € äÔÜÔÜÕ!r7   ©ÚreturnN)r8   r9   r:   Ú
identifierÚstaticmethodrE   rD   r7   r6   r=   r=   3   s   „ Ø€Jàò"ó ñ"r7   r=   rG   Nc                  óH   ‡— t         j                  Šdˆfd„} | t         _        y)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/
    Nc                 ó  •— |j                  dg «      }|j                  t        gt        |t        «      r|n|g¢¬«       t
        j                  t
        _        |j                  dd «      xs g }t
        g|¢|d<    ‰| g|¢­i |¤Ž y )NÚafter_exception)rL   Ú
middleware)ÚpopÚupdateÚexception_handlerÚ
isinstanceÚlistr*   Ú
_run_asgi3Ú__call__)r4   ÚargsÚkwargsrL   rM   Úold__init__s        €r6   Úinjection_wrapperz)patch_app_init.<locals>.injection_wrapperG   s”   ø€ Ø Ÿ*™*Ð%6¸Ó;ˆØ�‰ä!ðô " /´4Ô8ñ $à)Ð*ðð 	ô 		
ô 1M×0WÑ0WÔ$Ô-Ø—Z‘Z ¨dÓ3Ò9°rˆ
Ü <ÐJ¸zÐJˆˆ|ÑÙ�DÐ*˜4Ò* 6Ó*r7   )r4   r   rU   r   rV   r   rG   N)r   r3   )rX   rW   s    @r6   rA   rA   =   s   ø€ ô ×#Ñ#€Kõ+ð$ *„HÕr7   c                  óH   ‡— t         j                  Šdˆfd„} | t         _        y )Nc                 óL   •—  ‰| «      D �cg c]  }t        |«      ‘Œ c}S c c}w r@   )Úenable_span_for_middleware)r4   rM   Úold__resolve_middleware_stacks     €r6   Úresolve_middleware_wrapperz5patch_middlewares.<locals>.resolve_middleware_wrapper_   s/   ø€ ñ <¸DÓAö
àô ' zÕ2ò
ð 	
ùò 
s   Œ!)r4   r   rG   zList[Middleware])r   Úresolve_middleware)r]   r\   s    @r6   rB   rB   \   s    ø€ Ü$4×$GÑ$GÐ!õ
ð +EÔÕ'r7   c                 ó.  ‡— t        | d«      r| t        u r| S t        | t        «      r| j                  j
                  Šn| j
                  Š	 	 	 	 	 	 	 	 	 	 dˆfd„}‰j                  dv}|r*t        | t        «      r|| j                  _        | S || _        | S )NrT   c              “   ó  •‡‡‡K  — t         j                  }|j                  t        «      }|�¼| j                  j
                  Š|j                  t        j                  ‰¬«      5 }|j                  d‰«       	 	 	 	 	 	 dˆˆfd„}t        ‰dt        ‰«      «      }|dk(  }	|	s|n‰}
d	ˆˆfd„}t        ‰dt        ‰«      «      }|dk(  }|s|n‰} ‰| ||
|«      ƒ d {  –—† cd d d «       S  ‰| |‰‰«      ƒ d {  –—† S 7 Œ # 1 sw Y   y xY w7 Œ­w)
N©ÚopÚdescriptionústarlite.middleware_namec            
   Ÿ   ó
  •K  — t         j                  }|j                  t        j                  t        ‰dt        ‰«      «      ¬«      5 }|j                  d‰«        ‰| i |¤Žƒ d {  –—† cd d d «       S 7 Œ# 1 sw Y   y xY w­w©Nr:   ra   rd   )r   ÚcurrentÚ
start_spanr   ÚMIDDLEWARE_STARLITE_RECEIVEÚgetattrÚstrÚset_tag)rU   rV   ÚhubÚspanÚmiddleware_nameÚreceives       €€r6   Ú_sentry_receivezNenable_span_for_middleware.<locals>._create_span_call.<locals>._sentry_receive�   s   øè ø€ ô Ÿ+™+�CØŸ™Ü×9Ñ9Ü$+¨G°^ÄSÈÃ\Ó$Rð (ó ð >ð ØŸ™Ð%?ÀÔQÙ%,¨dÐ%=°fÑ%=×=÷>ñ >ð
  >ø÷>ð >üó0   ƒABÁ	A7Á'A5Á(A7Á+
BÁ5A7Á7B Á<Br8   rq   c           
   “   ó
  •K  — t         j                  }|j                  t        j                  t        ‰dt        ‰«      «      ¬«      5 }|j                  d‰«        ‰| «      ƒ d {  –—† cd d d «       S 7 Œ# 1 sw Y   y xY w­wrf   )r   rg   rh   r   ÚMIDDLEWARE_STARLITE_SENDrj   rk   rl   )Úmessagerm   rn   ro   Úsends      €€r6   Ú_sentry_sendzKenable_span_for_middleware.<locals>._create_span_call.<locals>._sentry_send‘   sw   øè ø€ ÜŸ+™+�CØŸ™Ü×6Ñ6Ü$+¨D°.Ä#ÀdÃ)Ó$Lð (ó ð 3ð ØŸ™Ð%?ÀÔQÙ%)¨'£]×2÷3ñ 3ð
  3ø÷3ð 3ürr   rw   )rU   r   rV   r   rG   z2Union[HTTPReceiveMessage, WebSocketReceiveMessage])ru   r!   rG   N)r   rg   Úget_integrationr=   r5   r8   rh   r   ÚMIDDLEWARE_STARLITErl   rj   rk   )r4   Úscoperp   rv   rm   ÚintegrationÚmiddleware_spanrq   Úreceive_nameÚreceive_patchedÚnew_receiverw   Ú	send_nameÚsend_patchedÚnew_sendro   Úold_calls     ``           @€r6   Ú_create_span_callz5enable_span_for_middleware.<locals>._create_span_callt   s/  ûè ø€ ô �k‰kˆØ×)Ñ)Ô*=Ó>ˆØÐ"Ø"Ÿn™n×5Ñ5ˆOØ—‘Ü×)Ñ)°ð  ó ð #Jà Ø×'Ñ'Ð(BÀOÔTð	>Ø ð	>Ø,1ð	>àIö	>ô  ' w°
¼CÀ»LÓI�Ø".Ð2CÑ"C�Ù5D™oÈ'�ö3ô $ D¨*´c¸$³iÓ@�	Ø(¨NÑ:�Ù/;™<À�á% d¨E°;ÀÓI×I÷G#Jñ #JñJ " $¨¨w¸Ó=×=Ð=ð Jø÷G#Jð #JúðJ >ús=   †ADÁ%A7C?ÃC=ÃC?Ã DÃ8DÃ9DÃ=C?Ã?DÄD)r„   )
r4   r'   rz   r$   rp   r#   rv   r%   rG   N)Úhasattrr*   rQ   r   rM   rT   r8   )rM   r„   Únot_yet_patchedrƒ   s      @r6   r[   r[   h   s¸   ø€ ä�J 
Ô+ØÔ5Ñ5àÐä�*Ô.Ô/Ø(×3Ñ3×<Ñ<‰à×&Ñ&ˆð,>Ø"ð,>Ø+2ð,>Ø=Fð,>ØNTð,>à	õ,>ð\ ×'Ñ'Ð/DÐD€OáÜ�jÔ"2Ô3Ø->ˆJ×!Ñ!Ô*ð Ðð #4ˆJÔàÐr7   c                  ó\   ‡— t         j                  Š	 	 	 	 	 	 	 	 	 	 dˆfd„} | t         _        y )Nc              “   óê  •‡‡
‡K  — t         j                  }|j                  t        «      }|€ ‰| ‰||«      ƒ d {  –—† S |j	                  «       5 }‰d   j                  ‰||¬«      } t        dd¬«      |«      Š
‰
j                  d«      }|ƒ d {  –—† Šdˆ
ˆˆfd„}	t        j                  |_	        |j                  |	«        ‰| ‰||«      ƒ d {  –—† cd d d «       S 7 Œ¤7 ŒP7 Œ# 1 sw Y   y xY w­w)Nr.   )rz   rp   rv   T)Ú
parse_bodyÚparse_queryÚbodyc                 óä  •— ‰	j                  d«      }| j                  di «      }t        ‰	j                  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        i}| j                  |||¬
«       | S )NÚroute_handlerÚrequestÚ_bodyr7   Úcontent_lengthÚcookiesÚdataÚsourcer,   )rŽ   ÚtransactionÚtransaction_info)ÚgetÚlenr   ÚnamerQ   Úfnr   Úvaluer   r   Ú_DEFAULT_TRANSACTION_NAMEr   rO   )
ÚeventÚ_r�   Úrequest_infoÚfuncÚtx_nameÚtx_infoÚextracted_request_dataÚrequest_datarz   s
          €€€r6   Úevent_processorzHpatch_http_route_handle.<locals>.handle_wrapper.<locals>.event_processorÃ   sü   ø€ Ø %§	¡	¨/Ó :�à$Ÿy™y¨°BÓ7�Ü14°U·Y±Y¸wÈÓ5LÓ1M�Ð-Ñ.Ü+Ô-Ø.DÀYÑ.O�L Ñ+ØÐ+Ø+7�L Ñ(à�Ø ×%Ñ%Ð1Ø+×0Ñ0‘GÜ × 0Ñ 0´#Ô6Ø(×+Ñ+×1Ñ1‘Dà(×+Ñ+�DØÐ#Ü7¸Ó=�Gà#Ô%5°jÑ%AÐB�áÜ7�GØ'Ô)AÐB�Gà—‘Ø(°gÐPWð ô ð �r7   )rœ   r(   r�   zDict[str, Any]rG   r(   )r   rg   rx   r=   Úconfigure_scopeÚrequest_classr   rN   rH   Ú_nameÚadd_event_processor)r4   rz   rp   rv   rm   r{   Úsentry_scoperŽ   r‹   r¤   r¢   r£   Ú
old_handles    `        @@€r6   Úhandle_wrapperz/patch_http_route_handle.<locals>.handle_wrapper°   s  ûè ø€ ô �k‰kˆØ+.×+>Ñ+>Ô?RÓ+SˆØÐÙ# D¨%°¸$Ó?×?Ð?à× Ñ Ó"ð -	@ lØ+0°©<×+EÑ+EØ W°4ð ,Fó ,ˆGð&Ô%<Ø¨Tô&àó&Ð"ð *×-Ñ-¨fÓ5ˆDà!%Ÿ:ˆL÷ô> "5×!?Ñ!?ˆLÔØ×,Ñ,¨_Ô=á# D¨%°¸$Ó?×?÷[-	@ñ -	@ð @øð &øðH @ø÷[-	@ð -	@üsM   †6C3¼C!½C3ÁAC'ÂC#ÂA C'ÃC%ÃC'ÃC3Ã#C'Ã%C'Ã'C0Ã,C3)
r4   r   rz   r    rp   r#   rv   r%   rG   N)r   Úhandle)r«   rª   s    @r6   rC   rC   ­   sL   ø€ Ü×!Ñ!€Jð5@Øð5@Ø"-ð5@Ø8Að5@ØIOð5@à	õ5@ðn &„IÕr7   rz   r$   c                 ó0  — | j                  di «      }|sy t        |t        «      r|S t        |t        «      r|j                  «       S t	        |d«      r|j                  «       S t        |«      }|r&t        |j                  «      s|j                  |«      S y )NÚuserÚasdict)	r–   rQ   Údictr   r…   r¯   r   r   Úto_dict)rz   Ú
scope_userÚplugins      r6   Úretrieve_user_from_scoper´   ê   sƒ   € Ø—‘˜6 2Ó&€JÙØÜ�*œdÔ#ØÐÜ�*œiÔ(Ø�‰Ó Ð Üˆz˜8Ô$Ø× Ñ Ó"Ð"ä! *Ó-€FÙÔ'¨¯©Ô7Ø�~‰~˜jÓ)Ð)àr7   Úexcr�   r   c                 ó¼  — t         j                  }|j                  t        «      €y d }t	        «       rt        |«      }|r:t        |t        «      r*|j                  «       5 }|j                  |«       d d d «       t        | |j                  r|j                  j                  nd t        j                  ddœ¬«      \  }}|j                  ||¬«       y # 1 sw Y   ŒaxY w)NF)ÚtypeÚhandled)Úclient_optionsÚ	mechanism)Úhint)r   rg   rx   r=   r   r´   rQ   r°   r¥   Úset_userr   ÚclientÚoptionsrH   Úcapture_event)rµ   rz   r�   rm   Ú	user_infor©   rœ   r»   s           r6   rP   rP   ü   s½   € Ü
�+‰+€CØ
×ÑÔ.Ó/Ð7Øà,0€IÜÔ!Ü,¨UÓ3ˆ	Ù”Z 	¬4Ô0Ø× Ñ Ó"ð 	- lØ×!Ñ! )Ô,÷	-ô 'ØØ-0¯ZªZ�s—z‘z×)Ò)¸TÜ.×9Ñ9ÀeÑLô�K€Eˆ4ð ×Ñ�e $ÐÕ'÷	-ð 	-ús   Á CÃCrF   )rM   r"   rG   r"   )rz   r$   rG   zOptional[Dict[str, Any]])AÚtypingr   Úpydanticr   Úsentry_sdk.constsr   Úsentry_sdk.hubr   r   Úsentry_sdk.integrationsr   r	   Úsentry_sdk.integrations.asgir
   Úsentry_sdk.tracingr   r   Úsentry_sdk.utilsr   r   r>   r   r   r   Ústarlite.handlers.baser   Ústarlite.middlewarer   Ústarlite.plugins.baser   Ústarlite.routes.httpr   Ústarlite.utilsr   r   r   r   r   r   r   r   Ústarlite.typesr   r   r    r!   r"   r#   r$   r%   r&   r'   Úsentry_sdk._typesr(   ÚImportErrorr›   r*   r=   rA   rB   r[   rC   r´   Ú	ExceptionrP   rD   r7   r6   ú<module>rÒ      s×   ðÝ  å Ý  ß 8ß =Ý =ß Iß Lð4ß1Ñ1Ý7Ý4Ý:Ý.ßNÑNáß;Õ;÷
	
÷ 
	
õ 
	
õ 	0Ý+ð
 7Ð ô
Ð#7ô 
ô"˜+ô "ó*ó>	EóBóJ:&ózð$(˜9ð (¨Wð (¸ð (ÀTô (øðu ò 4Ù
Ð2Ó
3Ð3ð4ús   ºAC ÃC