Ë
    S>{i²   ã                   óÖ  — 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 d dlmZmZ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Zd dlmZ 	 d dlZej:                  Zej>                  Z dZ! G d„ de«      Z% G d„ de&«      Z'dZ( G d„ de«      Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/y# e$ r	  ed«      ‚w xY w# e$ r! d dl"ZejF                  ZejH                  Z dZ!Y Œlw xY w)é    )Úabsolute_import)ÚHub)ÚIntegrationÚDidNotEnable)ÚRequestExtractor)ÚSentryWsgiMiddleware)ÚSOURCE_FOR_STYLE)Úcapture_internal_exceptionsÚevent_from_exceptionÚparse_version)ÚTYPE_CHECKING)ÚAny)ÚDict)ÚOptional)ÚEventProcessorN)Ú__version__zFalcon not installedTFc                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zerd„ Z	yd„ Z	y)	ÚFalconRequestExtractorc                 ó.   — | j                   j                  S ©N)ÚrequestÚenv©Úselfs    ú\/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sentry_sdk/integrations/falcon.pyr   zFalconRequestExtractor.env0   s   € à�|‰|×ÑÐó    c                 ó.   — | j                   j                  S r   )r   Úcookiesr   s    r   r   zFalconRequestExtractor.cookies4   s   € à�|‰|×#Ñ#Ð#r   c                  ó   — y r   © r   s    r   ÚformzFalconRequestExtractor.form8   ó   € àr   c                  ó   — y r   r    r   s    r   ÚfileszFalconRequestExtractor.files<   r"   r   c                 ó0   — | j                  «       }|dkD  ryy )Nr   z[REQUEST_CONTAINING_RAW_DATA])Úcontent_length)r   r&   s     r   Úraw_datazFalconRequestExtractor.raw_data@   s    € ð ×,Ñ,Ó.ˆØ˜AÒØ2àr   c                 óv   — 	 | j                   j                  S # t        j                  j                  $ r Y y w xY wr   )r   ÚmediaÚfalconÚerrorsÚHTTPBadRequestr   s    r   ÚjsonzFalconRequestExtractor.jsonO   s3   € ðØ—|‘|×)Ñ)Ð)øÜ—=‘=×/Ñ/ò Ùðús   ‚ ˜8·8c                 ó¢   — 	 | j                   j                  S # t        j                  j                  $ r | j                   j
                  cY S w xY wr   )r   r)   r*   r+   r,   Ú_mediar   s    r   r-   zFalconRequestExtractor.jsonX   sB   € ð+Ø—|‘|×)Ñ)Ð)øÜ—=‘=×/Ñ/ò +ð
 —|‘|×*Ñ*Ò*ð+ús   ‚ ˜3AÁAN)
Ú__name__Ú
__module__Ú__qualname__r   r   r!   r$   r'   ÚFALCON3r-   r    r   r   r   r   /   s*   „ ò ò$òòòñ ó	ó		+r   r   c                   ó   — e Zd ZdZd„ Zy)ÚSentryFalconMiddlewarez9Captures exceptions in Falcon requests and send to Sentryc                 óâ   — t         j                  }|j                  t        «      }|€y |j	                  «       5 }d|_        |j                  t        ||«      «       d d d «       y # 1 sw Y   y xY w)Nr*   )r   ÚcurrentÚget_integrationÚFalconIntegrationÚconfigure_scopeÚ_nameÚadd_event_processorÚ_make_request_event_processor)r   ÚreqÚrespÚargsÚkwargsÚhubÚintegrationÚscopes           r   Úprocess_requestz&SentryFalconMiddleware.process_requestg   si   € ä�k‰kˆØ×)Ñ)Ô*;Ó<ˆØÐØà× Ñ Ó"ð 	W eØ"ˆEŒKØ×%Ñ%Ô&CÀCÈÓ&UÔV÷	W÷ 	Wñ 	Wús   ¹#A%Á%A.N)r0   r1   r2   Ú__doc__rE   r    r   r   r5   r5   d   s   „ ÙCó	Wr   r5   ©Úuri_templateÚpathc                   ó,   — e Zd ZdZdZdd„Zed„ «       Zy)r9   r*   Ú 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)r   rP   s     r   Ú__init__zFalconIntegration.__init__{   s.   € àÔ$<Ñ<Ýâ$Ö&>ð@óð ð "3ˆÕr   c                  ó¾   — t        t        «      } | €t        dj                  t        «      «      ‚| dk  rt        d«      ‚t	        «        t        «        t        «        y )NzUnparsable Falcon version: {})é   é   zFalcon 1.4 or newer required.)r   ÚFALCON_VERSIONr   ÚformatÚ_patch_wsgi_appÚ_patch_handle_exceptionÚ_patch_prepare_middleware)Úversions    r   Ú
setup_oncezFalconIntegration.setup_once„   sP   € ô  ¤Ó/ˆàˆ?ÜÐ>×EÑEÄnÓUÓVÐVà�VÒÜÐ>Ó?Ð?äÔÜÔ!Ü!Õ#r   N)rH   )r0   r1   r2   Ú
identifierrP   rQ   Ústaticmethodr[   r    r   r   r9   r9   v   s&   „ Ø€JàÐó3ð ñ$ó ñ$r   r9   c                  óF   ‡— t         j                  Šˆfd„} | t         _        y )Nc                 ó˜   •‡ — t         j                  }|j                  t        «      }|€
 ‰‰ ||«      S t	        ˆˆ fd„«      } |||«      S )Nc                 ó   •—  ‰‰| |«      S r   r    )ÚenviÚ
start_respÚoriginal_wsgi_appr   s     €€r   ú<lambda>zB_patch_wsgi_app.<locals>.sentry_patched_wsgi_app.<locals>.<lambda>¡   s   ø€ Ñ%6°t¸TÀ:Ó%N€ r   )r   r7   r8   r9   r   )r   r   Ústart_responserB   rC   Úsentry_wrappedrc   s   `     €r   Úsentry_patched_wsgi_appz0_patch_wsgi_app.<locals>.sentry_patched_wsgi_app™   sN   ù€ ä�k‰kˆØ×)Ñ)Ô*;Ó<ˆØÐÙ$ T¨3°Ó?Ð?ä-ÜNó
ˆñ ˜c >Ó2Ð2r   )Úfalcon_app_classÚ__call__)rg   rc   s    @r   rW   rW   •   s   ø€ ä(×1Ñ1Ðô3ð !8ÔÕr   c                  óF   ‡— t         j                  Šˆfd„} | t         _        y )Nc                 ó4  •— t        |d   t        «      r|d   }n|d   } ‰	| g|¢­Ž }t        j                  }|j	                  t
        «      }|�Ht        |«      r=|j                  }t        ||j                  dddœ¬«      \  }}|j                  ||¬«       |S )Nr   é   r*   F)ÚtypeÚhandled)Úclient_optionsÚ	mechanism)Úhint)Ú
isinstanceÚ	Exceptionr   r7   r8   r9   Ú_exception_leads_to_http_5xxÚclientr   ÚoptionsÚcapture_event)
r   r@   ÚexÚwas_handledrB   rC   ru   Úeventrq   Úoriginal_handle_exceptions
            €r   Úsentry_patched_handle_exceptionz@_patch_handle_exception.<locals>.sentry_patched_handle_exception­   s    ø€ ô
 �d˜1‘gœyÔ)Ø�a‘‰Bà�a‘ˆBá/°Ð<°tÒ<ˆä�k‰kˆØ×)Ñ)Ô*;Ó<ˆàÐ"Ô'CÀBÔ'Gà—Z‘ZˆFä.ØØ%Ÿ~™~Ø#+¸Ñ>ô‰KˆE�4ð
 ×Ñ˜e¨$ÐÔ/àÐr   )rh   Ú_handle_exception)r|   r{   s    @r   rX   rX   ©   s    ø€ ä 0× BÑ BÐôð8 *IÔÕ&r   c                  óJ   ‡— t         j                  Š	 dˆfd„	} | t         _        y )Nc                 ó    •— |r
 ‰| ||«      S t         j                  }|j                  t        «      }|�t	        «       g| xs g z   }  ‰| |«      S r   )r   r7   r8   r9   r5   )Ú
middlewareÚindependent_middlewareÚasgirB   rC   Úoriginal_prepare_middlewares        €r   Ú!sentry_patched_prepare_middlewarezD_patch_prepare_middleware.<locals>.sentry_patched_prepare_middlewareÐ   s^   ø€ ñ á.¨zÐ;QÐSWÓXÐXä�k‰kˆØ×)Ñ)Ô*;Ó<ˆØÐ"Ü0Ó2Ð3°zÒ7GÀRÑHˆJñ +¨:Ð7MÓNÐNr   )NFF)Úfalcon_helpersÚprepare_middleware)r„   rƒ   s    @r   rY   rY   Ì   s&   ø€ ä"0×"CÑ"CÐð =BõOð" )J„NÕ%r   c                 óî   — t        | t        j                  «      xr | j                  xs dj	                  d«      }t        | t        j                  t        j
                  j                  f«       }|xs |S )NrK   Ú5)rr   r*   Ú	HTTPErrorÚstatusÚ
startswithÚhttp_statusÚ
HTTPStatus)rx   Úis_server_errorÚis_unhandled_errors      r   rt   rt   ä   sm   € ä  ¤V×%5Ñ%5Ó6ò ¸B¿I¹IºOÈ×;WÑ;WØó<€Oô (Ø
ŒV×Ñœv×1Ñ1×<Ñ<Ð=óð Ðð Ò0Ð0Ð0r   c                 ób   — |j                   |j                  dœ}||   | d<   dt        |   i| d<   y )NrG   ÚtransactionÚsourceÚtransaction_info)rH   rI   r	   )rz   rP   r   Úname_for_styles       r   Ú _set_transaction_name_and_sourcer•   ï   sD   € ð  ×,Ñ,Ø—‘ñ€Nð *Ð*;Ñ<€Eˆ-ÑØ!)Ô+;Ð<MÑ+NÐ O€EÐ
Òr   c                 ó   ‡ ‡— ˆˆ fd„}|S )Nc                 óª   •— t        | ‰j                  ‰«       t        «       5  t        ‰«      j	                  | «       d d d «       | S # 1 sw Y   | S xY wr   )r•   rP   r
   r   Úextract_into_event)rz   rq   rC   r>   s     €€r   Úevent_processorz6_make_request_event_processor.<locals>.event_processorü   sO   ø€ ä(¨°×0MÑ0MÈsÔSä(Ó*ñ 	BÜ" 3Ó'×:Ñ:¸5ÔA÷	Bð ˆ÷	Bð ˆús   £AÁAr    )r>   rC   r™   s   `` r   r=   r=   ù   s   ù€ õð Ðr   )0Ú
__future__r   Úsentry_sdk.hubr   Úsentry_sdk.integrationsr   r   Ú$sentry_sdk.integrations._wsgi_commonr   Úsentry_sdk.integrations.wsgir   Úsentry_sdk.tracingr	   Úsentry_sdk.utilsr
   r   r   Úsentry_sdk._typesr   Útypingr   r   r   r   r*   r   rU   ÚImportErrorÚfalcon.app_helpersÚapp_helpersr…   ÚApprh   r3   Úfalcon.api_helpersÚapi_helpersÚAPIr   Úobjectr5   rN   r9   rW   rX   rY   rt   r•   r=   r    r   r   ú<module>r«      sÿ   ðÝ &å ß =Ý AÝ =Ý /÷ñ õ ,áÝÝÝå0ð
/Ûå4ðÛà×'Ñ'€NØ—z‘zÐØ€Gô2+Ð-ô 2+ôjW˜Vô Wð 4Ð ô$˜ô $ò>8ò( IòFJò01òPóøðw ò /Ù
Ð-Ó
.Ð.ð/ûð ò Ûà×'Ñ'€NØ—z‘zÐØ‚Gðús   Á
B1 ÁC Â1B?Ã#C(Ã'C(