
    fi                     |   d dl mZ d dlZd dlmZ d dlZd dlmZ d dlm	Z	m
Z
 	 d dlmZ n# e$ r dZY nw xY wd dlmZ er2d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZmZ dZ ed eD                       ZdZed             Zd Z G d d          Z d Z!d Z"d Z# G d d          Z$dS )    )contextmanagerN)deepcopy)should_send_default_pii)AnnotatedValuelogger)RawPostDataException)TYPE_CHECKING)Any)Dict)Iterator)Mapping)MutableMapping)Optional)Union)EventHttpStatusCodeRange)REMOTE_ADDRHTTP_X_FORWARDED_FORHTTP_SET_COOKIEHTTP_COOKIEHTTP_AUTHORIZATIONHTTP_X_API_KEYr   HTTP_X_REAL_IPc              #   n   K   | ]0}|                     d           |t          d           d         V  1dS )HTTP_N)
startswithlen).0xs     t/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/sentry_sdk/integrations/_wsgi_common.py	<genexpr>r!   &   sV        Q\\'5J5Jc'llnn         )CONNECTDELETEGETPATCHPOSTPUTTRACEc               #      K   d V  d S N r,   r"   r    nullcontextr-   8   s       
EEEEEr"   c                 b    | dS | j         d         }|dk    p|dk    o|dk    p|dk    o|dk     S )NFmax_request_body_sizeneversmalli  mediumi'  )options)clientcontent_lengthbodiess      r    request_body_within_boundsr7   >   sY    ~u^34F' 	;g8.5"8	;h9>E#9 r"   c                   Z    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd ZdS )RequestExtractorz,
    Base class for request extraction.
    c                     || _         d S r+   )request)selfr;   s     r    __init__zRequestExtractor.__init__U   s    r"   c                 N   t          j                    }|                                sd S d }|                                 }|                    di           }t                      r$t          |                                           |d<   t          ||          st          j
                    }n`d }	 |                                 }n# t          t          f$ r Y nw xY w|                                 }||}n|rt          j                    }nd }|||d<   t!          |          |d<   d S )Nr;   cookiesdata)
sentry_sdk
get_client	is_activer5   getr   dictr?   r7   r   removed_because_over_size_limitraw_datar   
ValueErrorparsed_bodyremoved_because_raw_datar   )r<   eventr4   r@   r5   request_inforG   rI   s           r    extract_into_eventz#RequestExtractor.extract_into_eventY   sC   &((!! 	F,,..yyB//"$$ 	;&*4<<>>&:&:L#)&.AA 	!ACCDD H==??(*5    
 **,,K&" %>@@#'L #L11is   /C CCc                     	 t          |                                                     dd                    S # t          $ r Y dS w xY w)NCONTENT_LENGTHr   )intenvrD   rH   r<   s    r    r5   zRequestExtractor.content_length   sN    	txxzz~~&6::;;; 	 	 	11	s   47 
AAc                     t                      r+   NotImplementedErrorrR   s    r    r?   zRequestExtractor.cookies       !###r"   c                     t                      r+   rT   rR   s    r    rG   zRequestExtractor.raw_data   rV   r"   c                     t                      r+   rT   rR   s    r    formzRequestExtractor.form   rV   r"   c                 ~   	 |                                  }n# t          $ r d }Y nw xY w	 |                                 }n# t          $ r d }Y nw xY w|s|rVi }|r!t          |                                          }|r-|                                D ]}t          j                    ||<   |S |                                 S r+   )	rY   	ExceptionfilesrE   itemskeysr   rJ   json)r<   rY   r\   r@   keys        r    rI   zRequestExtractor.parsed_body   s    	99;;DD 	 	 	DDD		JJLLEE 	 	 	EEE	  	5 	D *DJJLL)) J ::<< J JC . G I IDIIKyy{{s    &&? AAc                 j    t          |                                                     d                    S )NCONTENT_TYPE)_is_json_content_typerQ   rD   rR   s    r    is_jsonzRequestExtractor.is_json   s$    $TXXZZ^^N%C%CDDDr"   c                 Z   	 |                                  sd S 	 |                                 }n# t          t          f$ r d }Y nw xY w|d S t	          |t
                    rt          j        |          S t          j        |                    d                    S # t          $ r Y nw xY wd S )Nzutf-8)	rd   rG   r   rH   
isinstancestrr_   loadsdecode)r<   rG   s     r    r_   zRequestExtractor.json   s    	<<>> t ==??(*5         
 t(C(( <z(+++z(//'":":;;; 	 	 	D	 ts=   B . B AB AB (B 4&B 
B('B(c                     t                      r+   rT   rR   s    r    r\   zRequestExtractor.files   rV   r"   c                     t                      r+   rT   )r<   files     r    size_of_filezRequestExtractor.size_of_file   rV   r"   c                     t                      r+   rT   rR   s    r    rQ   zRequestExtractor.env   rV   r"   N)__name__
__module____qualname____doc__r=   rM   r5   r?   rG   rY   rI   rd   r_   r\   rm   rQ   r,   r"   r    r9   r9   K   s           (2 (2 (2T  $ $ $$ $ $$ $ $  .E E E  2$ $ $$ $ $$ $ $ $ $r"   r9   c                     | pd                     dd          d         }|dk    p)|                    d          o|                    d          S )N ;   r   zapplication/jsonzapplication/z+json)splitr   endswith)ctmts     r    rc   rc      sV    
(		#q	!	!!	$B
   	!MM.)) !KK  r"   c                 ^    t                      r| S d |                                 D             S )Nc                     i | ]J\  }}||                                                     d d          t          vr|nt          j                    KS )-_)upperreplaceSENSITIVE_HEADERSr   rF   )r   kvs      r    
<dictcomp>z#_filter_headers.<locals>.<dictcomp>   se        Aq 	
wwyy  c**2CCC A?AA	  r"   )r   r]   )headerss    r    _filter_headersr      s@         MMOO   r"   c                     |D ]M}t          |t                    r
| |k    r dS !	 | |v r dS *# t          $ r t          j        d           Y Jw xY wdS )NTzFfailed_request_status_codes has to be a list of integers or containersF)rf   rP   	TypeErrorr   warning)codecode_rangestargets      r    _in_http_status_code_ranger      s      fc"" 	v~~tt	v~~tt  	 	 	NX    	
 5s   -AAc                       e Zd ZdZd Zd ZdS )HttpCodeRangeContainerz
    Wrapper to make it possible to use list[HttpStatusCodeRange] as a Container[int].
    Used for backwards compatibility with the old `failed_request_status_codes` option.
    c                     || _         d S r+   )_code_ranges)r<   r   s     r    r=   zHttpCodeRangeContainer.__init__	  s    'r"   c                 ,    t          || j                  S r+   )r   r   )r<   items     r    __contains__z#HttpCodeRangeContainer.__contains__  s    )$0ABBBr"   N)ro   rp   rq   rr   r=   r   r,   r"   r    r   r     sA         
( ( (C C C C Cr"   r   )%
contextlibr   r_   copyr   rA   sentry_sdk.scoper   sentry_sdk.utilsr   r   django.http.requestr   ImportErrortypingr	   r
   r   r   r   r   r   r   sentry_sdk._typesr   r   SENSITIVE_ENV_KEYStupler   DEFAULT_HTTP_METHODS_TO_CAPTUREr-   r7   r9   rc   r   r   r   r,   r"   r    <module>r      s_   % % % % % %            4 4 4 4 4 4 3 3 3 3 3 3 3 3 8888888        !           =%%%%%%<<<<<<<<	  E  1     
#  
 
 


 
 
I$ I$ I$ I$ I$ I$ I$ I$X      &C C C C C C C C C Cs   + 55