
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    „á§\R  ã                   @   sT   d dl Z d dlmZmZ d dlmZ d dlmZ G dd„ deƒZdd„ Zd	d
„ ZdS )é    N)ÚHubÚ_should_send_default_pii)ÚAnnotatedValue)Ú	text_typec                   @   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
   úU/opt/alt/python38/lib/python3.8/site-packages/sentry_sdk/integrations/_wsgi_common.pyÚ__init__   s    zRequestExtractor.__init__c                 C   sÚ   t jj}|d krd S d }|  ¡ }| di ¡}tƒ rBt|  ¡ ƒ|d< |jd }|dkst|dkrd|dkst|dkr�|dkr�t	d	d
dd|gg|dœƒ}n>|  
¡ }|d k	r¦|}n(|  ¡ rÊt	d	ddd|gg|dœƒ}nd S ||d< d S )Nr   ÚcookiesZrequest_bodiesÚneverZsmalliè  Zmediumi'  Ú z!configÚxr   )ÚremÚlenú!rawÚdata)r   ÚcurrentÚclientÚcontent_lengthÚ
setdefaultr   Údictr   Úoptionsr   Úparsed_bodyÚraw_data)r	   Úeventr   r   r   Zrequest_infoZbodiesr   r
   r
   r   Úextract_into_event   sB    
ÿþþýýþþz#RequestExtractor.extract_into_eventc                 C   s2   zt |  ¡  dd¡ƒW S  tk
r,   Y dS X d S )NZCONTENT_LENGTHr   )ÚintÚenvÚgetÚ
ValueError©r	   r
   r
   r   r   9   s    zRequestExtractor.content_lengthc                 C   s
   t ƒ ‚d S r   ©ÚNotImplementedErrorr#   r
   r
   r   r   @   s    zRequestExtractor.cookiesc                 C   s
   t ƒ ‚d S r   r$   r#   r
   r
   r   r   C   s    zRequestExtractor.raw_datac                 C   s
   t ƒ ‚d S r   r$   r#   r
   r
   r   ÚformF   s    zRequestExtractor.formc                 C   sj   |   ¡ }|  ¡ }|s|rbt| ¡ ƒ}| ¡ D ]0\}}|  |¡}td|ddd|ggdœƒ||< q,|S |  ¡ S )Nr   r   r   r   )r   r   )r&   Úfilesr   ÚitemsÚsize_of_filer   Újson)r	   r&   r'   r   ÚkÚvÚsizer
   r
   r   r   I   s    
 ÿ
zRequestExtractor.parsed_bodyc                 C   s   t |  ¡  d¡ƒS )NZCONTENT_TYPE)Ú_is_json_content_typer    r!   r#   r
   r
   r   Úis_jsonY   s    zRequestExtractor.is_jsonc                 C   sN   z4|   ¡ r2|  ¡ }t|tƒs&| d¡}t |¡W S W n tk
rH   Y nX d S )Nzutf-8)r/   r   Ú
isinstancer   Údecoder*   Úloadsr"   )r	   r   r
   r
   r   r*   ]   s    

zRequestExtractor.jsonc                 C   s
   t ƒ ‚d S r   r$   r#   r
   r
   r   r'   j   s    zRequestExtractor.filesc                 C   s
   t ƒ ‚d S r   r$   )r	   Úfiler
   r
   r   r)   m   s    zRequestExtractor.size_of_filec                 C   s
   t ƒ ‚d S r   r$   r#   r
   r
   r   r    p   s    zRequestExtractor.envN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r&   r   r/   r*   r'   r)   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)ÚsplitÚ
startswithÚendswith)ZctÚmtr
   r
   r   r.   t   s
    
ýr.   c                 C   s   t ƒ r
| S dd„ |  ¡ D ƒS )Nc                 S   s*   i | ]"\}}|  ¡  d d¡dkr||“qS )Ú_ú-)z
set-cookieZcookieZauthorization)ÚlowerÚreplace)Ú.0r+   r,   r
   r
   r   Ú
<dictcomp>ƒ   s   þ z#_filter_headers.<locals>.<dictcomp>)r   r(   )Úheadersr
   r
   r   Ú_filter_headers~   s
    þrD   )r*   Zsentry_sdk.hubr   r   Zsentry_sdk.utilsr   Zsentry_sdk._compatr   ZAnyÚDictÚOptionalÚUnionÚobjectr   r.   rD   r
   r
   r
   r   Ú<module>   s   	f
