bg0ddlmZddlmZddlmZmZddlmZddl m Z ddl m Z ddl mZmZmZddlmZerdd lmZdd lmZdd lmZdd lmZ dd lZddlmZn#e$r edwxYw dd lZejZejZ dZ!n#e$rdd l"Zej#Zej$Z dZ!YnwxYwGddeZ%Gdde&Z'dZ(GddeZ)dZ*dZ+dZ,dZ-dZ.dZ/d S))absolute_import)Hub) Integration DidNotEnable)RequestExtractor)SentryWsgiMiddleware)SOURCE_FOR_STYLE)capture_internal_exceptionsevent_from_exception parse_version) TYPE_CHECKING)Any)Dict)Optional)EventProcessorN) __version__zFalcon not installedTFc@eZdZdZdZdZdZdZerdZ dSdZ dS) FalconRequestExtractorc|jjSN)requestenvselfs U/opt/cloudlinux/venv/lib64/python3.11/site-packages/sentry_sdk/integrations/falcon.pyrzFalconRequestExtractor.env0s |c|jjSr)rcookiesrs rrzFalconRequestExtractor.cookies4s |##rcdSrrs rformzFalconRequestExtractor.form8trcdSrr rs rfileszFalconRequestExtractor.files<r"rc>|}|dkrdSdS)Nrz[REQUEST_CONTAINING_RAW_DATA])content_length)rr&s rraw_datazFalconRequestExtractor.raw_data@s+,,.. A  224rcR |jjS#tjj$rYdSwxYwr)rmediafalconerrorsHTTPBadRequestrs rjsonzFalconRequestExtractor.jsonOs9 |))=/   tt s &&ch |jjS#tjj$r|jjcYSwxYwr)rr)r*r+r,_mediars rr-zFalconRequestExtractor.jsonXsE +|))=/ + + + |****  +s  11N) __name__ __module__ __qualname__rrr!r$r'FALCON3r-r rrrr/s   $$$   +      + + + + +rrceZdZdZdZdS)SentryFalconMiddlewarez9Captures exceptions in Falcon requests and send to Sentryctj}|t}|dS|5}d|_|t||ddddS#1swxYwYdS)Nr*)rcurrentget_integrationFalconIntegrationconfigure_scope_nameadd_event_processor_make_request_event_processor)rreqrespargskwargshub integrationscopes rprocess_requestz&SentryFalconMiddleware.process_requestgsk))*;<<   F  " " We"EK  % %&CC&U&U V V V W W W W W W W W W W W W W W W W W Ws+A77A;>A;N)r0r1r2__doc__rEr rrr5r5ds.CC W W W W Wrr5 uri_templatepathc4eZdZdZdZddZedZdS)r9r*rHc\|tvrtd|dtd||_dS)Nz%Invalid value for transaction_style: z (must be in ))TRANSACTION_STYLE_VALUES ValueErrortransaction_style)rrPs r__init__zFalconIntegration.__init__{sJ $< < <*$$$&>&>&>@ "3rctt}|'tdt|dkrtdt t t dS)NzUnparsable Falcon version: {})zFalcon 1.4 or newer required.)r FALCON_VERSIONrformat_patch_wsgi_app_patch_handle_exception_patch_prepare_middleware)versions r setup_oncezFalconIntegration.setup_oncesw // ?>EEnUUVV V V  >?? ?!!!!#####rN)rH)r0r1r2 identifierrPrQ staticmethodr[r rrr9r9vsNJ3333 $ $\ $ $ $rr9cBtjfd}|t_dS)Nctj}|t}| ||St fd}|||S)Nc||Srr )envi start_resporiginal_wsgi_apprs rzB_patch_wsgi_app..sentry_patched_wsgi_app..s%6%6tT:%N%Nr)rr7r8r9r)rrstart_responserBrCsentry_wrappedrcs` rsentry_patched_wsgi_appz0_patch_wsgi_app..sentry_patched_wsgi_appslk))*;<<  $$T3?? ?- N N N N N  ~c>222r)falcon_app_class__call__)rgrcs @rrWrWs6(1 3 3 3 3 3!8rcBtjfd}|t_dS)NcVt|dtr |d}n|d} |g|R}tj}|t }|Jt |r;|j}t||j ddd\}}| |||S)Nrr*F)typehandled)client_options mechanism)hint) isinstance Exceptionrr7r8r9_exception_leads_to_http_5xxclientr options capture_event) rr@ex was_handledrBrCrueventrqoriginal_handle_exceptions rsentry_patched_handle_exceptionz@_patch_handle_exception..sentry_patched_handle_exceptions d1gy ) ) aBBaB//>KE4   e$  / / /r)rh_handle_exception)r|r{s @rrXrXs7 0 B8*I&&&rcFtj dfd }|t_dS)NFctj}|t}|t g|pgz}||Sr)rr7r8r9r5) middlewareindependent_middlewarerBrCoriginal_prepare_middlewares r!sentry_patched_prepare_middlewarezD_patch_prepare_middleware..sentry_patched_prepare_middlewaresRk))*;<<  "0223z7GRHJ**:7MNNNr)NF)falcon_helpersprepare_middleware)rrs @rrYrYsF"0"C16OOOOOO)JN%%%rct|tjo|jpdd}t|tjtjjf }|p|S)NrK5)rrr* HTTPErrorstatus startswith http_status HTTPStatus)rxis_server_erroris_unhandled_errors rrtrtsl V%566BIO;W;W <<O( V v1< =  000rc^|j|jd}|||d<dt|i|d<dS)NrG transactionsourcetransaction_info)rHrIr )rzrPrname_for_styles r _set_transaction_name_and_sourcersJ , N**;s revent_processorz6_make_request_event_processor..event_processors( 0MsSSS ( * * B B "3 ' ' : :5 A A A B B B B B B B B B B B B B B B s#AAAr )r>rCrs`` rr=r=s* r)0 __future__rsentry_sdk.hubrsentry_sdk.integrationsrr$sentry_sdk.integrations._wsgi_commonrsentry_sdk.integrations.wsgirsentry_sdk.tracingr sentry_sdk.utilsr r r sentry_sdk._typesr typingrrrrr*rrU ImportErrorfalcon.app_helpers app_helpersrApprhr3falcon.api_helpers api_helpersAPIrobjectr5rNr9rWrXrYrtrr=r rrrs&&&&&&========AAAAAA======////// ,+++++1000000 /MMM4444444/// ,- . ../ 'NzGG'NzGGG 2+2+2+2+2+-2+2+2+j W W W W WV W W W4$$$$$ $$$>888( I I IFJJJ"111PPP     s AA.2BB#"B#