bg>,FddlZddlZddlmZddlmZmZddlmZddl m Z ddl m Z m Z mZmZmZddlmZmZddlmZmZdd lmZdd lmZerdZ?dZ@dZ:d ZAd!ZBd"ZCd#ZDd$ZEd%ZFd&ZGd'ZHdS)(N) isawaitable)urlparsereraise)Hub)TRANSACTION_SOURCE_COMPONENT)capture_internal_exceptionsevent_from_exceptionHAS_REAL_CONTEXTVARSCONTEXTVARS_ERROR_MESSAGE parse_version) Integration DidNotEnable)RequestExtractor_filter_headers) ignore_logger) TYPE_CHECKING)Any)Callable)Optional)Union)Tuple)Dict)RequestRequestParameters)EventEventProcessorHint)Route)Sanic __version__)SanicException)Router) ErrorHandlerzSanic not installedc,eZdZdZdZedZdS)SanicIntegrationsanicNcttt_tj't dttjdkrt dt st dtztjdrtdtjdkrtdStdS)NzUnparsable Sanic version: {})rzSanic 0.8 or newer required.zUThe sanic integration for Sentry requires Python 3.7+ or the aiocontextvars package.z0.8.root ) r SANIC_VERSIONr%versionrformatr r startswithr_setup_legacy_sanic _setup_sanicT/opt/cloudlinux/venv/lib64/python3.11/site-packages/sentry_sdk/integrations/sanic.py setup_oncezSanicIntegration.setup_once9s$1#?#?  # +=DD]SSTT T  #f , ,=>> ># 24MN   #F + + " & ! ! !  #g - -  ! ! ! Fr4)__name__ __module__ __qualname__ identifierr. staticmethodr6r3r4r5r%r%5s7JG##\###r4r%c>eZdZdZdZdZdZdZdZdZ dZ d S) SanicRequestExtractorcP|jjdSt|jjS)Nr)requestbodylenselfs r5content_lengthz$SanicRequestExtractor.content_lengthas% <  $14<$%%%r4c4t|jjSN)dictr?cookiesrBs r5rHzSanicRequestExtractor.cookiesgsDL()))r4c|jjSrF)r?r@rBs r5raw_datazSanicRequestExtractor.raw_datak |  r4c|jjSrF)r?formrBs r5rMzSanicRequestExtractor.formorKr4ctrF)NotImplementedErrorrBs r5is_jsonzSanicRequestExtractor.is_jsonss!###r4c|jjSrF)r?jsonrBs r5rRzSanicRequestExtractor.jsonwrKr4c|jjSrF)r?filesrBs r5rTzSanicRequestExtractor.files{s |!!r4c.t|jpdS)Nr3)rAr@)rCfiles r5 size_of_filez"SanicRequestExtractor.size_of_files49?###r4N) r7r8r9rDrHrJrMrPrRrTrWr3r4r5r=r=`s&&& ***!!!!!!$$$!!!"""$$$$$r4r=cJtt_tt_dSrF)_startupr_sentry_error_handler_lookupr#lookupr3r4r5r2r2sEN6Lr4cltt_tt_t t_dSrF) _legacy_handle_requestrhandle_request_legacy_router_getr"getrZr#r[r3r4r5r1r1s1E#FJ6Lr4cK|dt|dt|dtt |d{VdS)Nzhttp.lifecycle.requestzhttp.lifecycle.responsezhttp.routing.after)signal _hub_enter _hub_exit_set_transaction old_startuprBs r5rYrYs*DKK())*555 +DKK)**9555&DKK$%%&6777 d  r4cKtj}|tdu|j_|jjsdSt j|}t||j_|jj |jj 5}| | t|ddddS#1swxYwYdSrF)rcurrentget_integrationr%ctx_sentry_do_integrationweakrefref _sentry_hub __enter__configure_scopeclear_breadcrumbsadd_event_processor_make_request_processor)r?hub weak_requestscopes r5rcrcs2 +C ,--T9 K& ; -;w''L!#hhGK K%%'''  0 0 2 2Ie !!! !!"9,"G"GHHHIIIIIIIIIIIIIIIIIIs,7C00C47C4cLK|jjddddSrF)rjrn__exit__)r?_s r5rdrds) K$$T466666r4cKtj}|tt 5|5}|j|jjd d}| |tdddn #1swxYwYddddS#1swxYwYdSdS)N.source) rrhrir%rrpnamereplaceappstripset_transaction_namer)r?routekwargsrtrv route_names r5reresK +C +,,8 ( * *  $$&& %"Z// 0@"EEKKCPP **'C+                                 98s6C AB-! C-B1 1C4B1 5CC  C ct|t||g|Ri|dStjt Sfd}|S)NcK ||}t|r|d{V}|tjr&tjdkrt|d{VSSS#t$r.t j}t|t|YnwxYw tjr'tjdkrt|d{VdSdSdS#tjr&tjdkrt|d{VwwwxYw)Nr*) rr%r.rd Exceptionsysexc_info_capture_exceptionr)r? exceptionresponserold_error_handlers r5sentry_wrapped_error_handlerzB_sentry_error_handler_lookup..sentry_wrapped_error_handlerso )(()<>>>>> ' ),<,D,O,O(((((((((( ),O   |~~H x ( ( ( X        ' ),<,D,O,O((((((((((( ) ),O,O' ),<,D,O,O(((((((((( ),Os#$A5BCBC5D)rold_error_handler_lookuprrhrir%)rCrargsrrrs @r5rZrZszy!!!0yR4RRR6RR t {""#344<  )))))( ('r4cKtj}|tt ||g|Ri|St j|}t|5}|5}|| t|dddn #1swxYwYt ||g|Ri|}t|r|d{V}|cdddS#1swxYwYdSrF) rrhrir%old_handle_requestrlrmrprqrrrsr)rCr?rrrtrurvrs r5r]r]s +C +,,4!$A$AAA&AAA;w''L S S  " " Me  # # % % %  % %&=l&K&K L L L M M M M M M M M M M M M M M M&dGEdEEEfEE x  &%~~~~~~H                  s6C627B5) C65B9 9C6<B9 =,C66C:=C:crt|g|R}tj}|tt 5|5}tjr}tjdkrm|jj j }|dj }| d|zr|t|dzd}| |tn'| |djtdddn #1swxYwYdddn #1swxYwY|S)N)r+rz%s.r})old_router_getrrhrir%rrpr.rjrrr0rArrr7)rCrrvrtrvsanic_app_name sanic_routes r5r_r_s  $t $ $ $B +C +,,8 ( * *  $$&& %#+0@0HG0S0S&*X\%6N"$Q%*K"--en.DEEM'2#n2E2E2I2K2K&L ..#,H/..1/K/%                              . Is7D,B1D D,D D,D D,,D03D0ctj}|t}|dS|j}t 5t ||jddd\}}|||ddddS#1swxYwYdS)Nr&F)typehandled)client_options mechanism)hint) rrhrir%clientrr options capture_event)rrt integrationreventrs r5rrs +C%%&677KZF $ & &,,* !>&599   t %d+++ ,,,,,,,,,,,,,,,,,,s5BB Bcfd}|S)Nc& |r#t|ddtrdSn#t$rYnwxYw}||St5t |}|||d}t j|j}|j d|j |j |d<|j |d<|j |d<d|ji|d <tt!|j|d <dddn #1swxYwY|S) Nrrr?z://url query_stringmethod REMOTE_ADDRenvheaders) issubclassr!KeyErrorrr=extract_into_eventrurlsplitrschemenetlocpathqueryr remote_addrrrGr)rrr? extractor request_infourlpartsrus r5sanic_processorz0_make_request_processor..sanic_processor3s   4 #3A#6GG t    D ,.. ?L ( * * M M-g66I  ( ( / / / +L(55H #L  ,4>L (%,^L "#0'2E"FL &5d7?6K6K&L&LL #! M M M M M M M M M M M M M M M$ s#) 66B%DD  D r3)rurs` r5rsrs1s%B r4)Irrlinspectrsentry_sdk._compatrrsentry_sdk.hubrsentry_sdk.tracingrsentry_sdk.utilsrr r r r sentry_sdk.integrationsr r$sentry_sdk.integrations._wsgi_commonrrsentry_sdk.integrations.loggingrsentry_sdk._typesrtypingrrrrrr sanic.requestrrrrr sanic.routerrr&rr r-sanic.exceptionsr!r"sanic.handlersr# ImportErrorr[rr^rr`rrYrfAttributeErrorr%r=r2r1rcrdrerZr]r_rrsr3r4r5rs 00000000;;;;;;>=======RRRRRRRR999999++++++ #88888888=========="""""".99999999//////######+++++++... ,, - --.(.) .KK   D ((((({(((V!$!$!$!$!$,!$!$!$H777 777(III&777   (((D(>,,,&#####s B''B8CC! C!