U 췀g*@sddlZddlmZddlmZmZddlmZddlm Z ddl m Z ddl m Z mZddlmZmZmZzDdd lmZmZdd lmZdd lmZdd lmZdd lmZWnek redYnXddlm Z e rDddlm!Z!m"Z"m#Z#ddl$m%Z%ddl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z-m.Z.m/Z/ddlm0Z0ddl1m2Z2m3Z3dZ4GdddeZ5GdddeZ6ddZ7ddZ8ddZ9d d!Z:d"d#Z;ee5d$d%Z.injection_wrapperN)rr6r r#)rBr(rAr)r%Os  r%cs&tjttfdd}|t_dS)Ncsdd|DS)NcSsg|] }t|qSr()enable_span_for_middleware).0r;r(r(r) qszIpatch_middlewares..resolve_middleware_wrapper..r()r7Zold_resolve_middleware_stackr(r)resolve_middleware_wrappernsz5patch_middlewares..resolve_middleware_wrapper)rZresolve_middlewarer r#)rGr(rFr)r&jsr&csht|dr|tkr|St|tr*|jjn|jfdd}jdk}|rdt|tr^||j_n||_|S)Nr>c sttdkr&||IdHS|jjtjtjtj d}| dfdd}t dt }|dk}|s~|n}fdd} t dt } | d k} | s| n} |||| IdHW5QRSQRXdS) Nopnamer/litestar.middleware_namec svttdkr"||IdHStjtjtdttj d*}| d||IdHW5QRSQRXdSNr-rHrK) sentry_sdk get_clientget_integrationr# start_spanrZMIDDLEWARE_LITESTAR_RECEIVEgetattrstrr/set_tag)r?r@span)middleware_namereceiver(r)_sentry_receives zNenable_span_for_middleware.._create_span_call.._sentry_receiver+rWc srttdkr |IdHStjtjtdttj d(}| d|IdHW5QRSQRXdSrL) rMrNrOr#rPrZMIDDLEWARE_LITESTAR_SENDrQrRr/rS)messagerT)rUsendr(r) _sentry_sends zKenable_span_for_middleware.._create_span_call.._sentry_sendrZ) rMrNrOr#r9r+rPrZMIDDLEWARE_LITESTARr/rSrQrR) r7scoperVrYZmiddleware_spanrWZ receive_nameZreceive_patchedZ new_receiverZZ send_nameZ send_patchedZnew_sendZold_call)rUrVrYr)_create_span_calls&     z5enable_span_for_middleware.._create_span_call)r])hasattrr1 isinstancerr;r>r+)r;r]Znot_yet_patchedr(r\r)rCys   1   rCcstjfdd}|t_dS)Ncsttdkr&|||IdHSt}dj||d}tddd|d}|IdHfdd}tj|_ | ||||IdHS)Nr3)r[rVrYT)Z parse_bodyZ parse_querybodycsd}|di}tdd|d<tr<d|d<dk rL|d<d}|jdk rb|j}nt|jdrx|jj}n|j}|dk rt|}d td i}|st }d t i}| |||d |S) N route_handlerrequest_bodycontent_lengthcookiesdatavaluesourcer2)rbZ transactionZtransaction_info) r=lenrrJr^fnrhr r_DEFAULT_TRANSACTION_NAMEr update)event_raZ request_infofuncZtx_nameZtx_infoZextracted_request_dataZ request_datar[r(r)event_processors4       zHpatch_http_route_handle..handle_wrapper..event_processor) rMrNrOr#get_isolation_scopeZ request_classrpopr._nameZadd_event_processor)r7r[rVrY sentry_scoperbr`rrZ old_handlerqr)handle_wrappers(  % z/patch_http_route_handle..handle_wrapper)rhandle)rxr(rwr)r's :r'cCs.|d}t|tr|St|dr*|SdS)Nuserasdict)r=r_dictr^r{)r[Z scope_userr(r(r)retrieve_user_from_scopes    r}cCsdd}trt|}|r2t|tr2t}||t|tj t j ddd\}}tj ||ddS)NF)typeZhandled)Zclient_optionsZ mechanism)hint) rr}r_r|rMrsZset_userr rNoptionsr#r.Z capture_event)excr[Z user_inforvrnrr(r(r)r<s  r<)=rMZsentry_sdk.constsrZsentry_sdk.integrationsrrZsentry_sdk.integrations.asgirZsentry_sdk.integrations.loggingrZsentry_sdk.scoperZsentry_sdk.tracingrr Zsentry_sdk.utilsr r r r$r rZlitestar.handlers.baserZlitestar.middlewarerZlitestar.routes.httprZlitestar.data_extractorsr ImportErrortypingrrrrZlitestar.types.asgi_typesrZlitestar.typesrrrrrrZ LitestarScoperrr Zsentry_sdk._typesr!r"rlr#r1r%r&rCr'r}r<r(r(r(r)s@         (  IA