Ë
    S>{i]  ã                   óÔ  — 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 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r d dlmZmZmZmZ d dlmZ d dlmZ d dlm Z m!Z! 	 d dl"Z"	 d dl$m%Z%m&Z& d dl$m'Z( d dl)m*Z*m+Z+m,Z, d dl-m.Z. 	 d dl/Z/dZ0 G d„ de	«      Z1d„ Z2d„ Z3d„ Z4 G d„ de«      Z5d„ Z6d„ Z7d „ Z8y# e#$ r dZ"Y ŒXw xY w# e#$ r	  ed«      ‚w xY w# e#$ r	  ed«      ‚w xY w)!é    )Úabsolute_import)ÚTYPE_CHECKING)ÚHubÚ_should_send_default_pii)ÚDidNotEnableÚIntegration)ÚRequestExtractor)ÚSentryWsgiMiddleware)Ú_get_installed_modules)ÚScope)ÚSOURCE_FOR_STYLE)Úcapture_internal_exceptionsÚevent_from_exceptionÚparse_version)ÚAnyÚCallableÚDictÚUnion)ÚEventProcessor)Ú_ScopedResponse)ÚFileStorageÚImmutableMultiDictN)ÚFlaskÚRequest)Úrequest)Úbefore_render_templateÚgot_request_exceptionÚrequest_started)ÚMarkupzFlask is not installedzblinker is not installed)ÚendpointÚurlc                   ó,   — e Zd ZdZdZdd„Zed„ «       Zy)ÚFlaskIntegrationÚflaskÚ c                 óN   — |t         vrt        d|›dt         ›d�«      ‚|| _        y )Nz%Invalid value for transaction_style: z (must be in ú))ÚTRANSACTION_STYLE_VALUESÚ
ValueErrorÚtransaction_style)Úselfr*   s     ú[/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sentry_sdk/integrations/flask.pyÚ__init__zFlaskIntegration.__init__7   s.   € àÔ$<Ñ<Ýâ$Ö&>ð@óð ð "3ˆÕó    c                  óh  ‡— t        «       } | d   }t        |«      }|€t        dj                  |«      «      ‚|dk  rt        d«      ‚t	        j
                  t        «       t        j
                  t        «       t        j
                  t        «       t        j                  Šˆfd„}|t        _        y )Nr$   zUnparsable Flask version: {})r   é
   z Flask 0.10 or newer is required.c                 óŒ   •‡ — t         j                  j                  t        «      €
 ‰‰ ||«      S  t	        ˆˆ fd„«      ||«      S )Nc                  ó   •—  ‰‰g| ¢­i |¤ŽS ©N© )ÚaÚkwÚold_appr+   s     €€r,   ú<lambda>zNFlaskIntegration.setup_once.<locals>.sentry_patched_wsgi_app.<locals>.<lambda>Y   s   ø€ ¹ÀÐ9PÈÒ9PÈRÑ9P€ r.   )r   ÚcurrentÚget_integrationr#   r
   )r+   ÚenvironÚstart_responser7   s   `  €r,   Úsentry_patched_wsgi_appz<FlaskIntegration.setup_once.<locals>.sentry_patched_wsgi_appT   sC   ù€ ä�{‰{×*Ñ*Ô+;Ó<ÐDÙ˜t W¨nÓ=Ð=àQÔ'Ô(PÓQØ˜óð r.   )r   r   r   Úformatr   ÚconnectÚ_add_sentry_tracer   Ú_request_startedr   Ú_capture_exceptionr   Ú__call__)Úinstalled_packagesÚflask_versionÚversionr=   r7   s       @r,   Ú
setup_oncezFlaskIntegration.setup_once@   s–   ø€ ô 4Ó5ÐØ*¨7Ñ3ˆÜ Ó.ˆàˆ?ÜÐ=×DÑDÀ]ÓSÓTÐTà�WÒÜÐAÓBÐBä×&Ñ&Ô'8Ô9Ü×ÑÔ 0Ô1Ü×%Ñ%Ô&8Ô9ä—.‘.ˆô	ð 1Œ�r.   N)r    )Ú__name__Ú
__module__Ú__qualname__Ú
identifierr*   r-   ÚstaticmethodrG   r4   r.   r,   r#   r#   2   s&   „ Ø€JàÐó3ð ñ1ó ñ1r.   r#   c                 ót   — d|v ry t         j                  }t        |j                  «       «      }||d<   ||d<   y )NÚsentry_traceÚsentry_trace_meta)r   r9   r   Útrace_propagation_meta)ÚsenderÚtemplateÚcontextÚextraÚhubÚ
trace_metas         r,   r@   r@   `   s>   € à˜Ñ Øä
�+‰+€CÜ˜×2Ñ2Ó4Ó5€JØ(€GˆNÑØ#-€GÐÒ r.   c                 ó¸   — 	 |j                   j                  |j                   j                  dœ}| j                  ||   t        |   ¬«       y # t
        $ r Y y w xY w)N)r!   r    )Úsource)Úurl_ruleÚruler    Úset_transaction_namer   Ú	Exception)Úscoper*   r   Úname_for_styles       r,   Ú _set_transaction_name_and_sourcer_   k   sg   € ð
à×#Ñ#×(Ñ(Ø×(Ñ(×1Ñ1ñ
ˆð 	×"Ñ"ØÐ,Ñ-Ü#Ð$5Ñ6ð 	#õ 	
øô ò Ùðús   ‚A
A Á	AÁAc                 ó0  — t         j                  }|j                  t        «      }|€y |j	                  «       5 }t        j                  «       }t        ||j                  |«       t        | ||«      }|j                  |«       d d d «       y # 1 sw Y   y xY wr3   )r   r9   r:   r#   Úconfigure_scopeÚflask_requestÚ_get_current_objectr_   r*   Ú_make_request_event_processorÚadd_event_processor)ÚappÚkwargsrU   Úintegrationr]   r   Úevt_processors          r,   rA   rA   z   s†   € ä
�+‰+€CØ×%Ñ%Ô&6Ó7€KØÐØà	×	Ñ	Ó	ð 1 %ô  ×3Ñ3Ó5ˆÜ(¨°×0MÑ0MÈwÔWÜ5°c¸7ÀKÓPˆØ×!Ñ! -Ô0÷1÷ 1ñ 1ús   ¹A
BÂBc                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚFlaskRequestExtractorc                 ó.   — | j                   j                  S r3   )r   r;   ©r+   s    r,   ÚenvzFlaskRequestExtractor.env‹   ó   € à�|‰|×#Ñ#Ð#r.   c           	      óÄ   — | j                   j                  j                  «       D ��ci c]+  \  }}|t        |t        «      rt        |«      dk(  r|d   n|“Œ- c}}S c c}}w )Né   r   )r   ÚcookiesÚitemsÚ
isinstanceÚlistÚlen)r+   ÚkÚvs      r,   rr   zFlaskRequestExtractor.cookies�   sY   € ð Ÿ™×,Ñ,×2Ñ2Ó4÷
á��1ð ”z !¤TÔ*¬s°1«v¸ª{ˆq�ŠtÀÑAó
ð 	
ùó 
s   ¨0Ac                 ó6   — | j                   j                  «       S r3   )r   Úget_datarm   s    r,   Úraw_datazFlaskRequestExtractor.raw_data–   s   € à�|‰|×$Ñ$Ó&Ð&r.   c                 ó.   — | j                   j                  S r3   )r   Úformrm   s    r,   r}   zFlaskRequestExtractor.formš   s   € à�|‰|× Ñ Ð r.   c                 ó.   — | j                   j                  S r3   )r   Úfilesrm   s    r,   r   zFlaskRequestExtractor.filesž   s   € à�|‰|×!Ñ!Ð!r.   c                 ó.   — | j                   j                  S r3   )r   Úis_jsonrm   s    r,   r�   zFlaskRequestExtractor.is_json¢   ro   r.   c                 ó:   — | j                   j                  d¬«      S )NT)Úsilent)r   Úget_jsonrm   s    r,   ÚjsonzFlaskRequestExtractor.json¦   s   € à�|‰|×$Ñ$¨DÐ$Ó1Ð1r.   c                 ó   — |j                   S r3   )Úcontent_length)r+   Úfiles     r,   Úsize_of_filez"FlaskRequestExtractor.size_of_fileª   s   € à×"Ñ"Ð"r.   N)rH   rI   rJ   rn   rr   r{   r}   r   r�   r…   r‰   r4   r.   r,   rk   rk   Š   s*   „ ò$ò
ò'ò!ò"ò$ò2ó#r.   rk   c                 ó   ‡— ˆfd„}|S )Nc                 óð   •— ‰€| S t        «       5  t        ‰«      j                  | «       d d d «       t        «       r t        «       5  t	        | «       d d d «       | S | S # 1 sw Y   Œ5xY w# 1 sw Y   | S xY wr3   )r   rk   Úextract_into_eventr   Ú_add_user_to_event)ÚeventÚhintr   s     €r,   Úinnerz,_make_request_event_processor.<locals>.inner²   sy   ø€ ð ˆ?ØˆLä(Ó*ñ 	EÜ! 'Ó*×=Ñ=¸eÔD÷	Eô $Ô%Ü,Ó.ñ *Ü" 5Ô)÷*ð ˆˆuˆ÷	Eð 	Eú÷*ð ˆús   �AÁA+ÁA(Á+A5r4   )rf   r   rh   r�   s    `  r,   rd   rd   ¯   s   ø€ ôð$ €Lr.   c                 óÊ   — t         j                  }|j                  t        «      €y |j                  }t        ||j                  dddœ¬«      \  }}|j                  ||¬«       y )Nr$   F)ÚtypeÚhandled)Úclient_optionsÚ	mechanism)r�   )r   r9   r:   r#   Úclientr   ÚoptionsÚcapture_event)rQ   Ú	exceptionrg   rU   r–   rŽ   r�   s          r,   rB   rB   Ç   s`   € ä
�+‰+€CØ
×ÑÔ+Ó,Ð4Øð �Z‰Z€Fä&ØØ—~‘~Ø"¨uÑ5ô�K€Eˆ4ð ×Ñ�e $ÐÕ'r.   c                 óª  — t         €y t         j                  }|€y t        «       5  | j                  di «      }	 |j                  d|j	                  «       «       	 |j                  d|j                  «       	 |j                  d|j                  «       d d d «       y # t
        $ r Y ŒNw xY w# t        $ r Y Œ@w xY w# t        $ r Y Œ2w xY w# 1 sw Y   y xY w)NÚuserÚidÚemailÚusername)	Úflask_loginÚcurrent_userr   Ú
setdefaultÚget_idÚAttributeErrorr�   r\   rž   )rŽ   r›   Ú	user_infos      r,   r�   r�   Ù   sÛ   € äÐØä×#Ñ#€DØ€|Øä	$Ó	&ñ ð ×$Ñ$ V¨RÓ0ˆ	ð	Ø× Ñ   t§{¡{£}Ô5ð 	Ø× Ñ  ¨$¯*©*Ô5ð	Ø× Ñ  ¨T¯]©]Ô;÷;ð øô ò 	ñ
 ð	ûô  ò 	Ùð	ûô
 ò 	Ùð	ú÷=ð úsd   ¥C	¹ BÁB+Á7B:Â	B(Â%C	Â'B(Â(C	Â+	B7Â4C	Â6B7Â7C	Â:	CÃC	ÃCÃC	Ã	C)9Ú
__future__r   Úsentry_sdk._typesr   Úsentry_sdk.hubr   r   Úsentry_sdk.integrationsr   r   Ú$sentry_sdk.integrations._wsgi_commonr	   Úsentry_sdk.integrations.wsgir
   Úsentry_sdk.integrations.modulesr   Úsentry_sdk.scoper   Úsentry_sdk.tracingr   Úsentry_sdk.utilsr   r   r   Útypingr   r   r   r   r   r   Úwerkzeug.datastructuresr   r   rŸ   ÚImportErrorr$   r   r   r   rb   Úflask.signalsr   r   r   Ú
markupsafer   Úblinkerr(   r#   r@   r_   rA   rk   rd   rB   r�   r4   r.   r,   ú<module>rµ      sø   ðÝ &å +ß 8ß =Ý AÝ =Ý BÝ "Ý /÷ñ ñ ß1Ó1å0Ý<ßGðÛð
1ß$Ý.÷ñ õ
 "ð3Ûð /Ð ô+1�{ô +1ò\.òò1ô "#Ð,ô "#òJò0(ó$(øð} ò Ø‚Kðûð ò 1Ù
Ð/Ó
0Ð0ð1ûð
 ò 3Ù
Ð1Ó
2Ð2ð3ús*   Á(B; Á-C ÂC Â;CÃCÃCÃC'