a
    Šxd­  ã                   @   s¾   d dl 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
 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 )é    N)ÚHubÚ_should_send_default_pii)ÚAnnotatedValue)Ú	text_typeÚ	iteritems)ÚMYPY)ÚAny)ÚDict)ÚOptional)ÚUnion)ZREMOTE_ADDRÚHTTP_X_FORWARDED_FORZHTTP_SET_COOKIEZHTTP_COOKIEZHTTP_AUTHORIZATIONZHTTP_X_API_KEYr   ZHTTP_X_REAL_IPc                 c   s(   | ] }|  d ¡r|td ƒd… V  qdS )ZHTTP_N)Ú
startswithÚlen)Ú.0Úx© r   ú\/var/www/html/Ranjet/env/lib/python3.9/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r.|dkp<|dko<|dk S )NFZrequest_bodiesÚneverÚsmalliè  Zmediumi'  )Úoptions)ÚclientÚcontent_lengthZ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__0   s    zRequestExtractor.__init__c                 C   sÂ   t jj}|d u rd S d }|  ¡ }| di ¡}tƒ rBt|  ¡ ƒ|d< t||ƒsht	dddd|gg|dœƒ}n>|  
¡ }|d ur~|}n(|  ¡ r¢t	dddd|gg|dœƒ}nd }|d ur¶||d	< ||d< d S )
Nr   ÚcookiesÚ ú!configr   r   )Úremr   ú!rawÚdata)r   Úcurrentr   r   Úgetr   Údictr   r   r   Úparsed_bodyÚraw_data)r   Úeventr   r$   r   Zrequest_infor(   r   r   r   Úextract_into_event4   s2    
þþz#RequestExtractor.extract_into_eventc                 C   s0   zt |  ¡  dd¡ƒW S  ty*   Y dS 0 d S )NÚCONTENT_LENGTHr   )ÚintÚenvr&   Ú
ValueError©r   r   r   r   r   X   s    zRequestExtractor.content_lengthc                 C   s
   t ƒ ‚d S r   ©ÚNotImplementedErrorr0   r   r   r   r   _   s    zRequestExtractor.cookiesc                 C   s
   t ƒ ‚d S r   r1   r0   r   r   r   r)   c   s    zRequestExtractor.raw_datac                 C   s
   t ƒ ‚d S r   r1   r0   r   r   r   Úformg   s    zRequestExtractor.formc                 C   sj   |   ¡ }|  ¡ }|s|rbtt|ƒƒ}t|ƒD ]0\}}|  |¡}td|ddd|ggdœƒ||< q,|S |  ¡ S )Nr    r#   r   r   )r   r"   )r3   Úfilesr'   r   Úsize_of_filer   Újson)r   r3   r4   r$   ÚkÚvÚsizer   r   r   r(   k   s    
ÿ
zRequestExtractor.parsed_bodyc                 C   s   t |  ¡  d¡ƒS )NÚCONTENT_TYPE)Ú_is_json_content_typer.   r&   r0   r   r   r   Úis_json{   s    zRequestExtractor.is_jsonc                 C   sh   zP|   ¡ sW d S |  ¡ }|d u r&W d S t|tƒr<t |¡W S t | d¡¡W S W n tyb   Y n0 d S )Nzutf-8)r<   r)   Ú
isinstancer   r6   ÚloadsÚdecoder/   )r   r)   r   r   r   r6      s    
zRequestExtractor.jsonc                 C   s
   t ƒ ‚d S r   r1   r0   r   r   r   r4   ’   s    zRequestExtractor.filesc                 C   s
   t ƒ ‚d S r   r1   )r   Úfiler   r   r   r5   –   s    zRequestExtractor.size_of_filec                 C   s
   t ƒ ‚d S r   r1   r0   r   r   r   r.   š   s    zRequestExtractor.envN)Ú__name__Ú
__module__Ú__qualname__r   r+   r   r   r)   r3   r(   r<   r6   r4   r5   r.   r   r   r   r   r   /   s   $r   c                 C   s0   | pd  dd¡d }|dkp.| d¡o.| d¡S )Nr    ú;é   r   zapplication/jsonzapplication/z+json)Úsplitr   Úendswith)ÚctÚmtr   r   r   r;   Ÿ   s
    
ýr;   c                 C   s   t ƒ r
| S dd„ t| ƒD ƒS )Nc                 S   sF   i | ]>\}}||  ¡  d d¡tvr&|ntdddddt|ƒggiƒ“qS )ú-Ú_r    r"   r!   r   r   )ÚupperÚreplaceÚSENSITIVE_HEADERSr   r   )r   r7   r8   r   r   r   Ú
<dictcomp>®   s
   ûÿz#_filter_headers.<locals>.<dictcomp>)r   r   )Úheadersr   r   r   Ú_filter_headers©   s
    úrQ   )r6   Zsentry_sdk.hubr   r   Zsentry_sdk.utilsr   Zsentry_sdk._compatr   r   Zsentry_sdk._typesr   Z
sentry_sdkÚtypingr   r	   r
   r   ZSENSITIVE_ENV_KEYSÚtuplerN   r   Úobjectr   r;   rQ   r   r   r   r   Ú<module>   s$   ÿp
