a
    xd}$                     @   s   d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZmZ erd 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d ZG dd deZG dd deZG dd deZdS )    N)	text_typePY2)MYPY)Session)
json_dumpscapture_internal_exceptions)Any)Optional)Union)Dict)List)Iterator)EventEventDataCategoryc                 C   s$   t st| tr| dd} t| S )Nutf-8replace)r   
isinstancebytesdecodejsonloads)data r   K/var/www/html/Ranjet/env/lib/python3.9/site-packages/sentry_sdk/envelope.py
parse_json   s    r   c                   @   s   e Zd Zd"ddZe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edd Zedd Zd d! ZdS )#EnvelopeNc                 C   s:   |d urt |}|pi | _|d u r(g }nt|}|| _d S N)dictheaderslistitems)selfr   r    r   r   r   __init__   s    
zEnvelope.__init__c                 C   s$   dt | jddd | jD f S )Nzenvelope with %s items (%s)z, c                 s   s   | ]}|j V  qd S r   )data_category).0xr   r   r   	<genexpr>2       z'Envelope.description.<locals>.<genexpr>)lenr    joinr!   r   r   r   description-   s    zEnvelope.descriptionc                 C   s   |  tt|ddd d S )Nr   eventpayloadtypeadd_itemItem
PayloadRef)r!   r-   r   r   r   	add_event5   s    zEnvelope.add_eventc                 C   s   |  tt|ddd d S )Nr,   transactionr.   r1   )r!   r6   r   r   r   add_transaction;   s    zEnvelope.add_transactionc                 C   s   |  tt|ddd d S )Nr,   profiler.   r1   )r!   r8   r   r   r   add_profileA   s    zEnvelope.add_profilec                 C   s.   t |tr| }| tt|ddd d S )Nr,   sessionr.   )r   r   to_jsonr2   r3   r4   )r!   r:   r   r   r   add_sessionG   s    
zEnvelope.add_sessionc                 C   s   |  tt|ddd d S )Nr,   sessionsr.   r1   )r!   r=   r   r   r   add_sessionsO   s    zEnvelope.add_sessionsc                 C   s   | j | d S r   )r    append)r!   itemr   r   r   r2   U   s    zEnvelope.add_itemc                 C   s(   | j D ]}| }|d ur|  S qd S r   )r    	get_event)r!   r    r-   r   r   r   rA   [   s
    

zEnvelope.get_eventc                 C   s(   | j D ]}| }|d ur|  S qd S r   )r    get_transaction_event)r!   r@   r-   r   r   r   rB   c   s
    

zEnvelope.get_transaction_eventc                 C   s
   t | jS r   )iterr    r*   r   r   r   __iter__k   s    zEnvelope.__iter__c                 C   s4   | t| j | d | jD ]}|| q d S )N   
)writer   r   r    serialize_into)r!   fr@   r   r   r   rG   o   s    

zEnvelope.serialize_intoc                 C   s   t  }| | | S r   ioBytesIOrG   getvaluer!   outr   r   r   	serializex   s    
zEnvelope.serializec                 C   s<   t | }g }t|}|d u r$q0|| q| ||dS )Nr   r    )r   readliner3   deserialize_fromr?   )clsrH   r   r    r@   r   r   r   rR   ~   s    
zEnvelope.deserialize_fromc                 C   s   |  t|S r   rR   rJ   rK   rS   r   r   r   r   deserialize   s    zEnvelope.deserializec                 C   s   d| j | jf S )Nz<Envelope headers=%r items=%r>rP   r*   r   r   r   __repr__   s    zEnvelope.__repr__)NN)__name__
__module____qualname__r"   propertyr+   r5   r7   r9   r<   r>   r2   rA   rB   rD   rG   rO   classmethodrR   rV   rW   r   r   r   r   r      s*     

	

r   c                   @   s2   e Zd Zd
ddZdd Zedd Zdd	 ZdS )r4   Nc                 C   s   || _ || _|| _d S r   )r   r   path)r!   r   r]   r   r   r   r   r"      s    zPayloadRef.__init__c              	   C   s   | j d u r| jd urrt F t| jd}| | _ W d    n1 sH0    Y  W d    q1 sf0    Y  n| jd urt| j| _ nd| _ | j S )Nrbr'   )r   r]   r   openreadr   r   )r!   rH   r   r   r   	get_bytes   s    

H
zPayloadRef.get_bytesc                 C   sN   | j d urdS | jd urJ| j}t|tr4|dd}t|d }|rJ|S dS )Nzapplication/jsonr   r   r   zapplication/octet-stream)r   r]   r   r   r   	mimetypes
guess_type)r!   r]   tyr   r   r   inferred_content_type   s    


z PayloadRef.inferred_content_typec                 C   s   d| j f S )Nz<Payload %r>)re   r*   r   r   r   rW      s    zPayloadRef.__repr__)NNN)rX   rY   rZ   r"   ra   r[   re   rW   r   r   r   r   r4      s      

r4   c                   @   sv   e Zd ZdddZdd Zedd Zedd	 Zd
d Zdd Z	dd Z
dd Zdd Zedd Zedd ZdS )r3   Nc                 C   s   |d urt |}n|d u ri }|| _t|tr:t|d}n t|trVt|dd}n|}|d urj||d< |d urz||d< |d ur||d< nd|vr|j|d< || _d S )N)r   r   filenamer0   content_type)	r   r   r   r   r4   r   encodere   r/   )r!   r/   r   r0   rg   rf   r   r   r   r"      s&    




zItem.__init__c                 C   s   d| j | j| jf S )Nz-<Item headers=%r payload=%r data_category=%r>)r   r/   r#   r*   r   r   r   rW      s
    zItem.__repr__c                 C   s   | j dS )Nr0   r   getr*   r   r   r   r0      s    z	Item.typec                 C   sP   | j d}|dkrdS |dkr$dS |dkr0dS |dkr<dS |dkrHdS d	S d S )
Nr0   r:   
attachmentr6   r-   errorZclient_reportZinternaldefaultri   )r!   rd   r   r   r   r#      s    zItem.data_categoryc                 C   s
   | j  S r   )r/   ra   r*   r   r   r   ra     s    zItem.get_bytesc                 C   s"   | j dkr| jjdur| jjS dS )z9
        Returns an error event if there is one.
        r-   Nr0   r/   r   r*   r   r   r   rA     s    zItem.get_eventc                 C   s"   | j dkr| jjd ur| jjS d S )Nr6   rn   r*   r   r   r   rB     s    zItem.get_transaction_eventc                 C   sN   t | j}|  }t||d< |t| |d || |d d S )NlengthrE   )r   r   ra   r(   rF   r   )r!   rH   r   r   r   r   r   rG     s    


zItem.serialize_intoc                 C   s   t  }| | | S r   rI   rM   r   r   r   rO   !  s    
zItem.serializec                 C   s   |   }|sd S t|}|d}|d urB||}|   n|  d}|ddv rv| |tt|dd}n| ||d}|S )Nro   rE   r0   )r-   r6   Zmetric_bucketsr,   )r   r/   )rQ   rstripr   rj   r`   r4   )rS   rH   liner   ro   r/   rvr   r   r   rR   '  s    


zItem.deserialize_fromc                 C   s   |  t|S r   rT   rU   r   r   r   rV   >  s    zItem.deserialize)NNNN)rX   rY   rZ   r"   rW   r[   r0   r#   ra   rA   rB   rG   rO   r\   rR   rV   r   r   r   r   r3      s&       


	
r3   )rJ   r   rb   Zsentry_sdk._compatr   r   Zsentry_sdk._typesr   Zsentry_sdk.sessionr   Zsentry_sdk.utilsr   r   typingr   r	   r
   r   r   r   r   r   r   objectr   r4   r3   r   r   r   r   <module>   s$   {,