Ë
    S>{i>,  ã                   óV  — d dl 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mZmZ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 er<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  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) 	 d dl*m+Z+m,Z- d dl.m/Z/ d dl(m0Z0 d dl1m2Z2 e2jh                  Z5e+jl                  Z7e0jp                  Z9	 e+jt                  Z; G d„ de«      Z= G d„ de«      Z>d„ Z?d„ Z@d„ Z:d „ ZAd!„ ZBd"„ ZCd#„ ZDd$„ ZEd%„ ZFd&„ ZGd'„ ZHy# e3$ r	  ed«      ‚w xY w# e<$ r Y ŒPw xY w)(é    N)Úisawaitable)ÚurlparseÚreraise)ÚHub)ÚTRANSACTION_SOURCE_COMPONENT)Úcapture_internal_exceptionsÚevent_from_exceptionÚHAS_REAL_CONTEXTVARSÚCONTEXTVARS_ERROR_MESSAGEÚparse_version)ÚIntegrationÚDidNotEnable)ÚRequestExtractorÚ_filter_headers)Úignore_logger)ÚTYPE_CHECKING)ÚAny)ÚCallable)ÚOptional)ÚUnion)ÚTuple)ÚDict)ÚRequestÚRequestParameters)ÚEventÚEventProcessorÚHint)ÚRoute)ÚSanicÚ__version__)ÚSanicException)ÚRouter)ÚErrorHandlerzSanic not installedc                   ó$   — e Zd ZdZdZed„ «       Zy)ÚSanicIntegrationÚsanicNc                  óŒ  — t        t        «      t        _        t        j                  €t	        dj                  t        «      «      ‚t        j                  dk  rt	        d«      ‚t        st	        dt        z   «      ‚t        j                  d«      rt        d«       t        j                  dk  rt        «        y t        «        y )NzUnparsable Sanic version: {})r   é   zSanic 0.8 or newer required.zUThe sanic integration for Sentry requires Python 3.7+  or the aiocontextvars package.z0.8.Úroot©é   é	   )r   ÚSANIC_VERSIONr%   Úversionr   Úformatr
   r   Ú
startswithr   Ú_setup_legacy_sanicÚ_setup_sanic© ó    ú[/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sentry_sdk/integrations/sanic.pyÚ
setup_oncezSanicIntegration.setup_once9   s¥   € ô $1´Ó#?ÔÔ ä×#Ñ#Ð+ÜÐ=×DÑDÄ]ÓSÓTÐTä×#Ñ# fÒ,ÜÐ=Ó>Ð>å#ô ð2Ü4MñNóð ô
 ×#Ñ# FÔ+ô ˜&Ô!ä×#Ñ# gÒ-ÜÔ!Øä�r4   )Ú__name__Ú
__module__Ú__qualname__Ú
identifierr.   Ústaticmethodr6   r3   r4   r5   r%   r%   5   s   „ Ø€JØ€Gàñ#ó ñ#r4   r%   c                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚSanicRequestExtractorc                 ón   — | j                   j                  €yt        | j                   j                  «      S )Nr   )ÚrequestÚbodyÚlen©Úselfs    r5   Úcontent_lengthz$SanicRequestExtractor.content_lengtha   s*   € à�<‰<×ÑÐ$ØÜ�4—<‘<×$Ñ$Ó%Ð%r4   c                 ó@   — t        | j                  j                  «      S ©N)Údictr?   ÚcookiesrB   s    r5   rH   zSanicRequestExtractor.cookiesg   s   € ä�D—L‘L×(Ñ(Ó)Ð)r4   c                 ó.   — | j                   j                  S rF   )r?   r@   rB   s    r5   Úraw_datazSanicRequestExtractor.raw_datak   ó   € à�|‰|× Ñ Ð r4   c                 ó.   — | j                   j                  S rF   )r?   ÚformrB   s    r5   rM   zSanicRequestExtractor.formo   rK   r4   c                 ó   — t        «       ‚rF   )ÚNotImplementedErrorrB   s    r5   Úis_jsonzSanicRequestExtractor.is_jsons   s   € ä!Ó#Ð#r4   c                 ó.   — | j                   j                  S rF   )r?   ÚjsonrB   s    r5   rR   zSanicRequestExtractor.jsonw   rK   r4   c                 ó.   — | j                   j                  S rF   )r?   ÚfilesrB   s    r5   rT   zSanicRequestExtractor.files{   s   € à�|‰|×!Ñ!Ð!r4   c                 ó4   — t        |j                  xs d«      S )Nr3   )rA   r@   )rC   Úfiles     r5   Úsize_of_filez"SanicRequestExtractor.size_of_file   s   € ä�4—9‘9’? Ó#Ð#r4   N)r7   r8   r9   rD   rH   rJ   rM   rP   rR   rT   rW   r3   r4   r5   r=   r=   `   s*   „ ò&ò*ò!ò!ò$ò!ò"ó$r4   r=   c                  ó@   — t         t        _         t        t        _        y rF   )Ú_startupr   Ú_sentry_error_handler_lookupr#   Úlookupr3   r4   r5   r2   r2   „   s   € ä„E„NÜ6„LÕr4   c                  ó^   — t         t        _        t        t        _        t        t        _        y rF   )	Ú_legacy_handle_requestr   Úhandle_requestÚ_legacy_router_getr"   ÚgetrZ   r#   r[   r3   r4   r5   r1   r1   Š   s   € ä1„EÔÜ#„F„JÜ6„LÕr4   c              ƒ   óØ   K  —  | j                  d«      t        «        | j                  d«      t        «        | j                  d«      t        «       t	        | «      ƒ d {  –—†  y 7 Œ­w)Nzhttp.lifecycle.requestzhttp.lifecycle.responsezhttp.routing.after)ÚsignalÚ
_hub_enterÚ	_hub_exitÚ_set_transactionÚold_startuprB   s    r5   rY   rY   ‘   sY   è ø€ ð *€D‡K�KÐ(Ó)¬*Ô5ð +€D‡K�KÐ)Ó*¬9Ô5ð &€D‡K�KÐ$Ó%Ô&6Ô7ô �dÓ
×Òús   ‚A A*Á"A(Á#A*c              ƒ   ó  K  — t         j                  }|j                  t        «      d u| j                  _        | j                  j
                  sy t        j                  | «      }t        |«      | j                  _        | j                  j                  j                  «        | j                  j                  j                  «       5 }|j                  «        |j                  t        |«      «       d d d «       y # 1 sw Y   y xY w­wrF   )r   ÚcurrentÚget_integrationr%   ÚctxÚ_sentry_do_integrationÚweakrefÚrefÚ_sentry_hubÚ	__enter__Úconfigure_scopeÚclear_breadcrumbsÚadd_event_processorÚ_make_request_processor)r?   ÚhubÚweak_requestÚscopes       r5   rc   rc   ¥   sÅ   è ø€ ä
�+‰+€Cà×ÑÔ,Ó-°TÐ9ð ‡K�KÔ&ð �;‰;×-Ò-Øä—;‘;˜wÓ'€LÜ! #›h€G‡K�KÔØ‡K�K×Ñ×%Ñ%Ô'à	�‰×	 Ñ	 ×	0Ñ	0Ó	2ð I°eØ×ÑÔ!Ø×!Ñ!Ô"9¸,Ó"GÔH÷I÷ Iñ Iüs   ‚CDÃ+C;Ã2	DÃ;DÄ Dc              ‹   óZ   K  — | j                   j                  j                  d d d «       y ­wrF   )rj   rn   Ú__exit__)r?   Ú_s     r5   rd   rd   ¸   s"   è ø€ à‡K�K×Ñ×$Ñ$ T¨4°Õ6ùs   ‚)+c              ‹   óŒ  K  — t         j                  }|j                  t        «      �ƒt	        «       5  |j                  «       5 }|j                  j                  | j                  j                  d«      j                  d«      }|j                  |t        ¬«       d d d «       d d d «       y y # 1 sw Y   ŒxY w# 1 sw Y   y xY w­w)NÚ ú.©Úsource)r   rh   ri   r%   r   rp   ÚnameÚreplaceÚappÚstripÚset_transaction_namer   )r?   ÚrouteÚkwargsrt   rv   Ú
route_names         r5   re   re   ½   s¬   è ø€ ä
�+‰+€CØ
×ÑÔ+Ó,Ð8Ü(Ó*ñ 	Ø×$Ñ$Ó&ð ¨%Ø"ŸZ™Z×/Ñ/°·±×0@Ñ0@À"ÓE×KÑKÈCÓP�
Ø×*Ñ*ØÔ'Cð +ô ÷÷	ð 	ð 9÷ð ú÷	ð 	üs5   ‚0C²B8ÁAB,ÂB8Â"
CÂ,B5	Â1B8Â8CÂ=Cc                 ó˜   ‡— t        |«       t        | |g|¢­i |¤ŽŠ‰€y t        j                  j	                  t
        «      €‰S ˆfd„}|S )Nc              “   ó$  •K  — 	  ‰| |«      }t        |«      r
|ƒ d {  –—† }|t        j                  r(t        j                  dk(  rt        | «      ƒ d {  –—†  S S S 7 Œ>7 Œ	# t        $ r* t        j                  «       }t        |«       t        |Ž  Y nw xY w	 t        j                  r)t        j                  dk(  rt        | «      ƒ d {  –—†7   y y y # t        j                  r)t        j                  dk(  rt        | «      ƒ d {  –—†7   w w w xY w­w)Nr*   )	r   r%   r.   rd   Ú	ExceptionÚsysÚexc_infoÚ_capture_exceptionr   )r?   Ú	exceptionÚresponser‹   Úold_error_handlers       €r5   Úsentry_wrapped_error_handlerzB_sentry_error_handler_lookup.<locals>.sentry_wrapped_error_handlerÔ   s÷   øè ø€ ð	)Ù(¨°)Ó<ˆHÜ˜8Ô$Ø!)Ÿ>�Øô  ×'Ò'Ô,<×,DÑ,DÈÒ,OÜ Ó(×(Ñ(ð -PÐ'ð *øð )ùô ò 	ô —|‘|“~ˆHÜ˜xÔ(Ü�XÓð	úð ô  ×'Ò'Ô,<×,DÑ,DÈÒ,OÜ Ó(×(Ò(ð -PÐ'øÔ×'Ò'Ô,<×,DÑ,DÈÒ,OÜ Ó(×(Ò(ð -PÐ'üss   ƒD…A! žAŸA! ¤1DÁAÁDÁA! ÁDÁ!0BÂC ÂBÂC Â1DÃ	CÃ
DÃ2DÄDÄDÄD)rŒ   Úold_error_handler_lookupr   rh   ri   r%   )rC   r�   Úargsr…   r�   r�   s        @r5   rZ   rZ   É   sT   ø€ ä�yÔ!Ü0°°yÐRÀ4ÒRÈ6ÑRÐàÐ Øä
‡{�{×"Ñ"Ô#3Ó4Ð<Ø Ð ô)ð( (Ð'r4   c              �   óÐ  K  — t         j                  }|j                  t        «      €t	        | |g|¢­i |¤ŽS t        j                  |«      }t        |«      5 }|j                  «       5 }|j                  «        |j                  t        |«      «       d d d «       t	        | |g|¢­i |¤Ž}t        |«      r
|ƒ d {  –—† }|cd d d «       S # 1 sw Y   Œ9xY w7 Œ# 1 sw Y   y xY w­wrF   )r   rh   ri   r%   Úold_handle_requestrl   rm   rp   rq   rr   rs   r   )rC   r?   r’   r…   rt   ru   rv   rŽ   s           r5   r]   r]   ë   sß   è ø€ ä
�+‰+€CØ
×ÑÔ+Ó,Ð4Ü! $¨ÐA°$ÒA¸&ÑAÐAä—;‘;˜wÓ'€Lä	ˆS‹ð 	�SØ× Ñ Ó"ð 	M eØ×#Ñ#Ô%Ø×%Ñ%Ô&=¸lÓ&KÔL÷	Mô & d¨GÐE°dÒE¸fÑEˆÜ�xÔ Ø%—~ˆHà÷	ñ 	÷	Mð 	Múð &ø÷	ð 	üsB   ‚AC&ÁCÁ)+CÂ(CÂ<CÂ=CÃ
C&ÃC	ÃCÃC#ÃC&c                 ó\  — t        | g|¢­Ž }t        j                  }|j                  t        «      �át        «       5  |j                  «       5 }t        j                  rt        j                  dk\  rl| j                  j                  j                  }|d   j                  }|j                  d|z  «      r|t        |«      dz   d  }|j                  |t        ¬«       n$|j                  |d   j                  t        ¬«       d d d «       d d d «       |S |S # 1 sw Y   ŒxY w# 1 sw Y   |S xY w)N)r+   é   r   z%s.é   r}   )Úold_router_getr   rh   ri   r%   r   rp   r.   rj   r�   r   r0   rA   rƒ   r   r7   )rC   r’   Úrvrt   rv   Úsanic_app_nameÚsanic_routes          r5   r_   r_   ÿ   s  € ä	˜Ð	$˜tÒ	$€BÜ
�+‰+€CØ
×ÑÔ+Ó,Ð8Ü(Ó*ñ 	Ø×$Ñ$Ó&ð ¨%Ü#×+Ò+Ô0@×0HÑ0HÈGÒ0Sð &*§X¡X§\¡\×%6Ñ%6�NØ"$ Q¡%§*¡*�Kà"×-Ñ-¨e°nÑ.DÔEð '2´#°nÓ2EÈÑ2IÐ2KÐ&L˜à×.Ñ.Ø#Ô,Hð /õ ð ×.Ñ.Ø˜1™Ÿ™Ô/Kð /ô ÷%÷	ð. €Iˆ2€I÷-ð ú÷	ð. €Iús$   ¼D!ÁB4DÄD!ÄD	ÄD!Ä!D+c                 ó  — t         j                  }|j                  t        «      }|€y |j                  }t        «       5  t        | |j                  dddœ¬«      \  }}|j                  ||¬«       d d d «       y # 1 sw Y   y xY w)Nr&   F)ÚtypeÚhandled)Úclient_optionsÚ	mechanism)Úhint)	r   rh   ri   r%   Úclientr   r	   ÚoptionsÚcapture_event)r�   rt   Úintegrationr¢   Úeventr¡   s         r5   rŒ   rŒ     s€   € ä
�+‰+€CØ×%Ñ%Ô&6Ó7€KØÐØð �Z‰Z€Fä	$Ó	&ñ ,Ü*ØØ!Ÿ>™>Ø&°5Ñ9ô
‰ˆˆtð
 	×Ñ˜% dÐÔ+÷,÷ ,ñ ,ús   ¿2A:Á:Bc                 ó   ‡ — ˆ fd„}|S )Nc                 ó$  •— 	 |rt        |d   d   t        «      ry  ‰«       }|€| S t        «       5  t	        |«      }|j                  | «       | d   }t        j                  |j                  «      }|j                  ›d|j                  ›|j                  ›�|d<   |j                  |d<   |j                  |d<   d|j                  i|d	<   t        t!        |j"                  «      «      |d
<   d d d «       | S # t        $ r Y Œåw xY w# 1 sw Y   | S xY w)Nr‹   r   r?   z://ÚurlÚquery_stringÚmethodÚREMOTE_ADDRÚenvÚheaders)Ú
issubclassr!   ÚKeyErrorr   r=   Úextract_into_eventr   Úurlsplitr©   ÚschemeÚnetlocÚpathÚqueryr«   Úremote_addrr   rG   r®   )r¦   r¡   r?   Ú	extractorÚrequest_infoÚurlpartsru   s         €r5   Úsanic_processorz0_make_request_processor.<locals>.sanic_processor3  s  ø€ ð	Ùœ
 4¨
Ñ#3°AÑ#6¼ÔGØñ “.ˆØˆ?ØˆLä(Ó*ñ 	MÜ-¨gÓ6ˆIØ×(Ñ(¨Ô/à  Ñ+ˆLÜ×(Ñ(¨¯©Ó5ˆHð —“Ø—’Ø—’ð#ˆL˜Ñð ,4¯>©>ˆL˜Ñ(Ø%,§^¡^ˆL˜Ñ"Ø#0°'×2EÑ2EÐ"FˆL˜ÑÜ&5´d¸7¿?¹?Ó6KÓ&LˆL˜Ñ#÷!	Mð$ ˆøô3 ò 	Ùð	ú÷	Mð$ ˆús   ƒC6 ±B;DÃ6	DÄDÄDr3   )ru   r»   s   ` r5   rs   rs   1  s   ø€ ôðB Ðr4   )IrŠ   rl   Úinspectr   Úsentry_sdk._compatr   r   Úsentry_sdk.hubr   Úsentry_sdk.tracingr   Úsentry_sdk.utilsr   r	   r
   r   r   Úsentry_sdk.integrationsr   r   Ú$sentry_sdk.integrations._wsgi_commonr   r   Úsentry_sdk.integrations.loggingr   Úsentry_sdk._typesr   Útypingr   r   r   r   r   r   Úsanic.requestr   r   r   r   r   Úsanic.routerr   r&   r   r    r-   Úsanic.exceptionsr!   r"   Úsanic.handlersr#   ÚImportErrorr[   r‘   r^   r”   r`   r˜   rY   rf   ÚAttributeErrorr%   r=   r2   r1   rc   rd   re   rZ   r]   r_   rŒ   rs   r3   r4   r5   ú<module>rÌ      s  ðÛ 
Û Ý ç 0Ý Ý ;÷õ ÷ >ß RÝ 9å +áÝÝÝÝÝÝç8ç=Ñ=Ý"ð.ß9Ý/Ý#Ý+ð (×.Ñ.Ð Ø×)Ñ)Ð Ø—‘€ð	à—.‘.€Kô
(�{ô (ôV!$Ð,ô !$òH7ò7òò(Iò&7ò
	ò(òDò(ò>,ó&#øðU ò .Ù
Ð,Ó
-Ð-ð.ûð ò 	Ùð	ús   ÂD ÃD  ÄDÄ D(Ä'D(