Ë
    S>{im%  ã                   óæ  — d dl 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 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 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$ d dlm%Z% d dlm&Z& d dlm'Z'  e$d«      Z( e$d«      Z) e$d«      Z* G d„ de%«      Z+ ed«      Z,erd)d„Z-nd)d„Z-d*d„Z. G d „ d!e/«      Z0	 d+d"„Z1d#„ Z2d$„ Z3d%„ Z4 G d&„ d'e/«      Z5d(„ Z6y),é    N)ÚPY2Úreraise)Úpartial)ÚTYPE_CHECKING)Úget_hostÚ_get_headers)Úcontinue_trace)ÚOP)ÚHubÚ_should_send_default_pii)Ú
ContextVarÚcapture_internal_exceptionsÚevent_from_exception)ÚTransactionÚTRANSACTION_SOURCE_ROUTE)Úauto_session_tracking)Ú_filter_headers)ÚCallable)ÚDict)ÚIterator)ÚAny)ÚTuple)ÚOptional)ÚTypeVar)ÚProtocol)ÚExcInfo)ÚEventProcessorÚWsgiResponseIterÚWsgiResponseHeadersÚWsgiExcInfoc                   ó   — e Zd Zdd„Zy)ÚStartResponseNc                  ó   — y ©N© )ÚselfÚstatusÚresponse_headersÚexc_infos       úZ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sentry_sdk/integrations/wsgi.pyÚ__call__zStartResponse.__call__%   s   € àó    r$   )Ú__name__Ú
__module__Ú__qualname__r+   r%   r,   r*   r"   r"   $   s   „ ô	r,   r"   Úsentry_wsgi_middleware_appliedc                 ó&   — | j                  ||«      S r$   )Údecode©ÚsÚcharsetÚerrorss      r*   Úwsgi_decoding_dancer7   /   s   € à�x‰x˜ Ó(Ð(r,   c                 óD   — | j                  d«      j                  ||«      S )NÚlatin1)Úencoder2   r3   s      r*   r7   r7   5   s   € à�x‰x˜Ó!×(Ñ(¨°&Ó9Ð9r,   c           	      óž   — | j                  d«      ›dt        | |«      ›dt        | j                  d«      xs d«      j                  d«      ›�S )zPReturn the absolute URL without query string for the given WSGI
    environment.zwsgi.url_schemez://ú/Ú	PATH_INFOÚ )Úgetr   r7   Úlstrip)ÚenvironÚuse_x_forwarded_fors     r*   Úget_request_urlrC   :   sG   € ð
 	�‰Ð%Õ&Ü�Ð-Õ.Ü˜GŸK™K¨Ó4Ò:¸Ó;×BÑBÀ3ÔGðð r,   c                   ó   — e Zd ZdZdd„Zd„ Zy)ÚSentryWsgiMiddleware©ÚapprB   c                 ó    — || _         || _        y r$   rF   )r&   rG   rB   s      r*   Ú__init__zSentryWsgiMiddleware.__init__H   s   € àˆŒØ#6ˆÕ r,   c                 ó°  — t         j                  d«      r| j                  ||«      S t         j                  d«       	 t	        t        j
                  «      }t        |d¬«      5  |5  t        «       5  |j                  «       5 }|j                  «        d|_
        |j                  t        || j                  «      «       d d d «       d d d «       t        |t        j                   dt"        ¬«      }|j%                  |d|i¬	«      5  	 | j                  |t'        t(        ||«      «      }d d d «       d d d «       d d d «       t         j                  d«       t1        |«      S # 1 sw Y   Œ£xY w# 1 sw Y   Œ§xY w# t*        $ r t-        t/        |«      Ž  Y Œmw xY w# 1 sw Y   ŒrxY w# 1 sw Y   ŒvxY w# 1 sw Y   ŒzxY w# t         j                  d«       w xY w)
NFTÚrequest)Úsession_modeÚwsgizgeneric WSGI request)ÚopÚnameÚsourceÚwsgi_environ)Úcustom_sampling_context)Ú_wsgi_middleware_appliedr?   rG   Úsetr   Úcurrentr   r   Úconfigure_scopeÚclear_breadcrumbsÚ_nameÚadd_event_processorÚ_make_wsgi_event_processorrB   r	   r
   ÚHTTP_SERVERr   Ústart_transactionr   Ú_sentry_start_responseÚBaseExceptionr   Ú_capture_exceptionÚ_ScopedResponse)r&   rA   Ústart_responseÚhubÚscopeÚtransactionÚrvs          r*   r+   zSentryWsgiMiddleware.__call__M   s®  € ä#×'Ñ'¨Ô.Ø—8‘8˜G ^Ó4Ð4ä ×$Ñ$ TÔ*ð"	0Ü”c—k‘kÓ"ˆCÜ& s¸ÔCñ >Øñ >Ü4Ó6ñ Ø ×0Ñ0Ó2ð °eØ!×3Ñ3Ô5Ø*0˜EœKØ!×5Ñ5Ü :Ø$+¨T×-EÑ-Eó!"ô÷÷ô #1ØÜŸ>™>Ø3Ü7ô	#�Kð ×.Ñ.Ø#¸nÈgÐ=Vð /ó ñ >ð>Ø!%§¡Ø 'Ü 'Ü$:¸NÈKó!"ó"˜B÷	>÷%>÷>ô@ %×(Ñ(¨Ô/ä˜s BÓ'Ð'÷?ð ú÷ð ûô6  -ò >Ü#Ô%7¸Ó%<Ó=ð>ú÷>ð >ú÷%>ð >ú÷>ð >ûô@ %×(Ñ(¨Õ/ús¡   ¾&F> Á$F2Á'F&Á2E.Â=E"	Ã E.Ã>F&ÄFÄ!E:Ä)F&Ä1F2Ä9F> Å"E+Å'E.Å.E7Å3F&Å:F	ÆFÆF	ÆFÆF#ÆF&Æ&F/	Æ+F2Æ2F;Æ7F> Æ>GN©F)r-   r.   r/   Ú	__slots__rI   r+   r%   r,   r*   rE   rE   E   s   „ Ø.€Ió7ó
*(r,   rE   c                 óÈ   — t        «       5  t        |j                  dd«      d   «      }|j                  |«       d d d «       |€	 | ||«      S  | |||«      S # 1 sw Y   ŒxY w)Nú é   r   )r   ÚintÚsplitÚset_http_status)Úold_start_responserd   r'   r(   r)   Ú
status_ints         r*   r]   r]   z   so   € ô 
%Ó	&ñ 0Ü˜Ÿ™ c¨1Ó-¨aÑ0Ó1ˆ
Ø×#Ñ# JÔ/÷0ð Ðñ " &Ð*:Ó;Ð;á! &Ð*:¸HÓEÐE÷0ð 0ús   ‹0AÁA!c              #   ó^   K  — ddg}t        «       r|dgz  }|D ]  }|| v sŒ|| |   f–— Œ y­w)z�
    Returns our explicitly included environment variables we want to
    capture (server name, port and remote addr if pii is enabled).
    ÚSERVER_NAMEÚSERVER_PORTÚREMOTE_ADDRN)r   )rA   ÚkeysÚkeys      r*   Ú_get_environrv   �   sK   è ø€ ð ˜=Ð)€DÜÔ!ð 	��Ñˆàò $ˆØ�'Š>Ø�w˜s‘|Ð#Ó#ñ$ùs   ‚-¡-c                 óÄ   — 	 | d   j                  d«      d   j                  «       S # t        t        f$ r Y nw xY w	 | d   S # t        $ r Y nw xY w| j	                  d«      S )zÏ
    Infer the user IP address from various headers. This cannot be used in
    security sensitive situations since the value may be forged from a client,
    but it's good enough for the event payload.
    ÚHTTP_X_FORWARDED_FORú,r   ÚHTTP_X_REAL_IPrs   )rl   ÚstripÚKeyErrorÚ
IndexErrorr?   )rA   s    r*   Úget_client_ipr~       sw   € ðØÐ-Ñ.×4Ñ4°SÓ9¸!Ñ<×BÑBÓDÐDøÜ”jÐ!ò ÙðúðØÐ'Ñ(Ð(øÜò Ùðúð �;‰;�}Ó%Ð%s   ‚$' §9¸9½A Á	AÁAc                 ó
  — t        j                  «       }| j                  �b|d   }t        |t        «      xr |j
                  dv }|s;t        || j                  j                  dddœ¬«      \  }}| j                  ||¬«       |S )Nrj   )r   NrM   F)ÚtypeÚhandled)Úclient_optionsÚ	mechanism)Úhint)	Úsysr)   ÚclientÚ
isinstanceÚ
SystemExitÚcoder   ÚoptionsÚcapture_event)rb   r)   ÚeÚshould_skip_captureÚeventr„   s         r*   r_   r_   ´   s‚   € ä�|‰|‹~€Hð ‡z�zÐØ�Q‰Kˆô )¨¬JÓ7ÒO¸A¿F¹FÀiÐ<OÐÙ"Ü.ØØ"Ÿz™z×1Ñ1Ø#)°eÑ<ô‰KˆE�4ð
 ×Ñ˜e¨$ÐÔ/à€Or,   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)r`   )Ú	_responseÚ_hubc                 ó    — || _         || _        y r$   )r‘   r�   )r&   rb   Úresponses      r*   rI   z_ScopedResponse.__init__Ì   s   € àˆŒ	Ø!ˆ�r,   c              #   ó  K  — t        | j                  «      }	 | j                  5  	 t        |«      }d d d «       –— Œ&# t        $ r Y d d d «       y t
        $ r t        t        | j                  «      Ž  Y ŒEw xY w# 1 sw Y   ŒJxY w­wr$   )Úiterr�   r‘   ÚnextÚStopIterationr^   r   r_   )r&   ÚiteratorÚchunks      r*   Ú__iter__z_ScopedResponse.__iter__Ñ   s†   è ø€ ä˜Ÿ™Ó'ˆàØ—‘ñ <ð<Ü  ›N�E÷<ð ŠKð øô %ò Ø÷	<ð <ô
 %ò <ÜÔ/°·	±	Ó:Ó;ð<ú÷<ð <üsH   ‚#B¥A;§?²B¿	A8ÁA;Á		BÁ#A8Á5A;Á7A8Á8A;Á;BÂ Bc                 óä   — | j                   5  	 | j                  j                  «        d d d «       y # t        $ r Y Œt        $ r t        t        | j                   «      Ž  Y Œ9w xY w# 1 sw Y   y xY wr$   )r‘   r�   ÚcloseÚAttributeErrorr^   r   r_   )r&   s    r*   rœ   z_ScopedResponse.closeà   sf   € à�Y‰Yñ 	8ð8Ø—‘×$Ñ$Ô&÷	8ð 	8øô "ò ÙÜ ò 8ÜÔ+¨D¯I©IÓ6Ó7ð8ú÷	8ð 	8ús0   �A&�2²	A#»A&½#A#Á A&Á"A#Á#A&Á&A/N)r-   r.   r/   rg   rI   rš   rœ   r%   r,   r*   r`   r`   É   s   „ Ø%€Iò"ò
ó8r,   r`   c                 óú   ‡‡‡‡‡‡— t        | «      Št        | |«      Š| j                  d«      Š| j                  d«      Št        t	        | «      «      Št        t        t        | «      «      «      Šˆˆˆˆˆˆfd„}|S )NÚQUERY_STRINGÚREQUEST_METHODc                 óþ   •— t        «       5  | j                  di «      }t        «       r&| j                  di «      }‰r|j                  d‰«       ‰	|d<   ‰|d<   ‰|d<   ‰|d<   ‰|d<   d d d «       | S # 1 sw Y   | S xY w)	NrK   ÚuserÚ
ip_addressÚurlÚquery_stringÚmethodÚenvÚheaders)r   Ú
setdefaultr   )
rŽ   r„   Úrequest_infoÚ	user_infoÚ	client_ipr§   r¨   r¦   r¥   Úrequest_urls
       €€€€€€r*   Úevent_processorz3_make_wsgi_event_processor.<locals>.event_processor   s–   ø€ ä(Ó*ñ 	.à ×+Ñ+¨I°rÓ:ˆLä'Ô)Ø!×,Ñ,¨V°RÓ8�	ÙØ×(Ñ(¨°yÔAà"-ˆL˜ÑØ+7ˆL˜Ñ(Ø%+ˆL˜Ñ"Ø"%ˆL˜ÑØ&-ˆL˜Ñ#÷	.ð ˆ÷	.ð ˆús   ŒAA2Á2A<)r~   rC   r?   Údictrv   r   r   )	rA   rB   r®   r¬   r§   r¨   r¦   r¥   r­   s	      @@@@@@r*   rZ   rZ   ë   sn   ý€ ô ˜gÓ&€IÜ! 'Ð+>Ó?€KØ—;‘;˜~Ó.€LØ�[‰[Ð)Ó*€FÜ
Œ|˜GÓ$Ó
%€CÜœd¤<°Ó#8Ó9Ó:€G÷ñ ð& Ðr,   )zutf-8Úreplacerf   r$   )7r…   Úsentry_sdk._compatr   r   Úsentry_sdk._functoolsr   Úsentry_sdk._typesr   Úsentry_sdk._werkzeugr   r   Úsentry_sdk.apir	   Úsentry_sdk.constsr
   Úsentry_sdk.hubr   r   Úsentry_sdk.utilsr   r   r   Úsentry_sdk.tracingr   r   Úsentry_sdk.sessionsr   Ú$sentry_sdk.integrations._wsgi_commonr   Útypingr   r   r   r   r   r   r   r   r   r   r   r   r    r"   rS   r7   rC   ÚobjectrE   r]   rv   r~   r_   r`   rZ   r%   r,   r*   ú<module>r¾      sÝ   ðÛ 
ç +Ý )Ý +ß 7Ý )Ý  ß 8÷ñ ÷
 EÝ 5Ý @áÝÝÝÝÝÝÝÝå(Ý0áÐ1Ó2ÐÙ!Ð"7Ó8ÐÙ˜-Ó(€Kô˜ô ñ &Ð&FÓGÐ ñ ô)ó:ó
ô2(˜6ô 2(ðt óFò*$ò"&ò(ô*8�fô 8óD(r,   