U \R@sTddlZddlmZmZddlmZddlmZGddde Z ddZd d ZdS) N)Hub_should_send_default_pii)AnnotatedValue) text_typec@sleZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZdS)RequestExtractorcCs ||_dSN)request)selfrr /_wsgi_common.py__init__szRequestExtractor.__init__cCstjj}|dkrdSd}|}|di}trBt||d<|jd}|dkst|dkrd|dkst|dkr|dkrt d d d d |gg|d }n>| }|dk r|}n(| rt d dd d |gg|d }ndS||d<dS)NrcookiesZrequest_bodiesneverZsmalliZmediumi'z!configxr)remlen!rawdata) rZcurrentclientcontent_length setdefaultrdictr Zoptionsr parsed_bodyraw_data)r ZeventrrrZ request_infoZbodiesrr r r extract_into_eventsB  z#RequestExtractor.extract_into_eventcCs2zt|ddWStk r,YdSXdS)NZCONTENT_LENGTHr)intenvget ValueErrorr r r r r9szRequestExtractor.content_lengthcCs tdSrNotImplementedErrorr r r r r @szRequestExtractor.cookiescCs tdSrr!r r r r rCszRequestExtractor.raw_datacCs tdSrr!r r r r formFszRequestExtractor.formcCsj|}|}|s|rbt|}|D]0\}}||}td|ddd|ggd||<q,|S|S)Nrrrr)rr)r#filesritems size_of_filerjson)r r#r$rkvsizer r r rIs   zRequestExtractor.parsed_bodycCst|dS)NZ CONTENT_TYPE)_is_json_content_typerrr r r r is_jsonYszRequestExtractor.is_jsoncCsNz4|r2|}t|ts&|d}t|WSWntk rHYnXdS)Nzutf-8)r,r isinstancerdecoder'loadsr)r rr r r r']s  zRequestExtractor.jsoncCs tdSrr!r r r r r$jszRequestExtractor.filescCs tdSrr!)r filer r r r&mszRequestExtractor.size_of_filecCs tdSrr!r r r r rpszRequestExtractor.envN)__name__ __module__ __qualname__r rrr rr#rr,r'r$r&rr r r r rs& rcCs0|pdddd}|dkp.|do.|dS)Nr;rzapplication/jsonz application/z+json)split startswithendswith)ZctZmtr r r r+ts  r+cCstr |Sdd|DS)NcSs*i|]"\}}|dddkr||qS)_-)z set-cookieZcookieZ authorization)lowerreplace).0r(r)r r r sz#_filter_headers..)rr%)Zheadersr r r _filter_headers~s r?)r'Zsentry_sdk.hubrrZsentry_sdk.utilsrZsentry_sdk._compatrZAnyZDictZOptionalZUnionobjectrr+r?r r r r s   f