o
    ii                     @   s   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	 d dl
mZmZ d dlmZ zd dlmZ W n ey?   dZY nw er^d dlZd d	lmZ d d
lmZ d dlmZ d dlmZ dZedd eD Zdd ZG dd deZdd Zdd ZdS )    )absolute_importN)deepcopy)Hub_should_send_default_pii)AnnotatedValue)	text_type	iteritems)TYPE_CHECKING)RawPostDataException)Any)Dict)Optional)Union)REMOTE_ADDRHTTP_X_FORWARDED_FORHTTP_SET_COOKIEHTTP_COOKIEHTTP_AUTHORIZATIONHTTP_X_API_KEYr   HTTP_X_REAL_IPc                 c   s*    | ]}| d r|td d V  qdS )HTTP_N)
startswithlen).0x r   c/var/www/html/pca-backend/venv/lib/python3.10/site-packages/sentry_sdk/integrations/_wsgi_common.py	<genexpr>&   s    

r   c                 C   s@   | d u r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bodiesr   r   r   request_body_within_bounds+   s   
r&   c                   @   sl   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )RequestExtractorc                 C   s
   || _ d S N)request)selfr)   r   r   r   __init__9   s   
zRequestExtractor.__init__c              	   C   s   t jj}|d u r
d S d }|  }|di }t r!t|  |d< t||s+t	
 }n(d }z|  }W n ttfy>   Y nw |  }|d urJ|}n	|rQt	 }nd }|d ur[||d< t||d< d S )Nr)   cookiesdata)r   currentr#   r$   getr   dictr,   r&   r   removed_because_over_size_limitraw_datar
   
ValueErrorparsed_bodyremoved_because_raw_datar   )r*   eventr#   r-   r$   request_infor2   r4   r   r   r   extract_into_event=   s2   


z#RequestExtractor.extract_into_eventc                 C   s,   zt |  ddW S  ty   Y dS w )NCONTENT_LENGTHr   )intenvr/   r3   r*   r   r   r   r$   g   s
   zRequestExtractor.content_lengthc                 C      t  r(   NotImplementedErrorr<   r   r   r   r,   n      zRequestExtractor.cookiesc                 C   r=   r(   r>   r<   r   r   r   r2   r   r@   zRequestExtractor.raw_datac                 C   r=   r(   r>   r<   r   r   r   formv   r@   zRequestExtractor.formc                 C   sN   |   }|  }|s|r#tt|}t|D ]
\}}t ||< q|S |  S r(   )rA   filesr0   r   r   r5   json)r*   rA   rB   r-   key_r   r   r   r4   z   s   zRequestExtractor.parsed_bodyc                 C   s   t |  dS )NCONTENT_TYPE)_is_json_content_typer;   r/   r<   r   r   r   is_json   s   zRequestExtractor.is_jsonc                 C   sb   z&|   sW d S |  }|d u rW d S t|trt|W S t|dW S  ty0   Y d S w )Nzutf-8)rH   r2   
isinstancer   rC   loadsdecoder3   )r*   r2   r   r   r   rC      s   
zRequestExtractor.jsonc                 C   r=   r(   r>   r<   r   r   r   rB      r@   zRequestExtractor.filesc                 C   r=   r(   r>   )r*   filer   r   r   size_of_file   r@   zRequestExtractor.size_of_filec                 C   r=   r(   r>   r<   r   r   r   r;      r@   zRequestExtractor.envN)__name__
__module____qualname__r+   r8   r$   r,   r2   rA   r4   rH   rC   rB   rM   r;   r   r   r   r   r'   8   s    *r'   c                 C   s0   | pd ddd }|dkp|do|dS )N ;   r   zapplication/jsonzapplication/z+json)splitr   endswith)ctmtr   r   r   rG      s
   
rG   c                 C   s   t  r| S dd t| D S )Nc                 S   s2   i | ]\}}||  d dtvr|nt qS )-rE   )upperreplaceSENSITIVE_HEADERSr   r1   )r   kvr   r   r   
<dictcomp>   s    z#_filter_headers.<locals>.<dictcomp>)r   r   )headersr   r   r   _filter_headers   s
   r`   ) 
__future__r   rC   copyr   sentry_sdk.hubr   r   sentry_sdk.utilsr   sentry_sdk._compatr   r   sentry_sdk._typesr	   django.http.requestr
   ImportError
sentry_sdktypingr   r   r   r   SENSITIVE_ENV_KEYStupler[   r&   objectr'   rG   r`   r   r   r   r   <module>   s4    s
