<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
U
    \'                     @   s   d dl mZ d dlZd dlZ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mZmZ d dlmZ zd dlmZ W n  ek
r   d dlmZ Y nX G dd	 d	eZG d
d deZ G dd deZ!dd Z"dS )    )print_functionN)datetime	timedelta)VERSION)Dsnloggercapture_internal_exceptions)BackgroundWorker)
getproxiesc                   @   s@   e Zd ZdZdZdddZdd ZdddZd	d
 Zdd Z	dS )	TransportzWBaseclass for all transports.

    A transport is used to send an event to sentry.
    Nc                 C   s,   || _ |r"|d r"t|d | _nd | _d S )Ndsn)optionsr   
parsed_dsn)selfr    r   E/opt/alt/python38/lib/python3.8/site-packages/sentry_sdk/transport.py__init__(   s    zTransport.__init__c                 C   s
   t  dS )zdThis gets invoked with the event dictionary when an event should
        be sent to sentry.
        N)NotImplementedErrorr   eventr   r   r   capture_event0   s    zTransport.capture_eventc                 C   s   dS )z=Wait `timeout` seconds for the current events to be sent out.Nr   r   timeoutcallbackr   r   r   flush6   s    zTransport.flushc                 C   s   dS )zForcefully kills the transport.Nr   r   r   r   r   kill:   s    zTransport.killc                 C   s&   z|    W n tk
r    Y nX d S N)r   	Exceptionr   r   r   r   __del__?   s    zTransport.__del__)N)N)
__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r   r   r       s   

r   c                   @   sJ   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d ZdddZ	dd Z
dS )HttpTransportzThe default HTTP transport.c                 C   sv   t | | t | _| jdt | _d | _t	j
 | _|| _| j| j|d |d |d d| _ddlm} || _d S )Nzsentry.python/%s
http_proxyhttps_proxyca_certs)r%   r&   r'   r   )Hub)r   r   r	   _workerr   Zto_authr   _auth_disabled_untilurllib3utilZRetry_retryr   
_make_pool_poolZ
sentry_sdkr(   hub_cls)r   r   r(   r   r   r   r   J   s    zHttpTransport.__init__c              	   C   s2  | j d k	r"t | j k rd S d | _ t }tj|dd }|tj	|dd
d W 5 Q R X td|dppd|d	 | jj| jjf  | jjd
t| jj| t| j dddd}z`|jdkrt t| j|pdd | _ W 2d S |jdks|jdk rtd|j|j W 5 |  X d | _ d S )Nw)fileobjmodeF)	allow_nanzutf-8z&Sending %s event [%s] to %s project:%slevelerrorZevent_idZPOSTzapplication/jsongzip)zX-Sentry-AuthzContent-TypezContent-Encoding)bodyheadersi  <   )secondsi,     z%Unexpected status code: %s (body: %s))r+   r   utcnowioBytesIOr8   ZGzipFilewritejsondumpsencoder   debuggetr   hostZ
project_idr0   requeststrr*   Zstore_api_urlgetvalueZ	to_headerclosestatusr   r.   Zget_retry_afterr7   data)r   r   r9   fresponser   r   r   _send_event^   sN    
$	



zHttpTransport._send_eventc                 C   s   dd|pt  dS )N   ZCERT_REQUIRED)Z	num_poolsZ	cert_reqsr'   )certifiwhere)r   r'   r   r   r   _get_pool_options   s    
zHttpTransport._get_pool_optionsc                 C   sP   |j dkr|p|}|s$t |j }| |}|r@tj|f|S tjf |S d S )Nhttps)schemer
   rF   rT   r,   ProxyManagerPoolManager)r   r   r%   r&   r'   proxyoptsr   r   r   r/      s    	
zHttpTransport._make_poolc                    s(   j j fdd}j| d S )Nc                
      s0   " t     W 5 Q R X W 5 Q R X d S r   )r   rP   r   r   Zhubr   r   r   send_event_wrapper   s    z7HttpTransport.capture_event.<locals>.send_event_wrapper)r1   currentr)   Zsubmit)r   r   r\   r   r[   r   r      s    zHttpTransport.capture_eventNc                 C   s$   t d |dkr | j|| d S )NzFlushing HTTP transportr   )r   rE   r)   r   r   r   r   r   r      s    
zHttpTransport.flushc                 C   s   t d | j  d S )NzKilling HTTP transport)r   rE   r)   r   r   r   r   r   r      s    
zHttpTransport.kill)N)r    r!   r"   r#   r   rP   rT   r/   r   r   r   r   r   r   r   r$   G   s   1
r$   c                   @   s   e Zd Zdd Zdd ZdS )_FunctionTransportc                 C   s   t |  || _d S r   )r   r   _func)r   funcr   r   r   r      s    
z_FunctionTransport.__init__c                 C   s   |  | d S r   )r_   r   r   r   r   r      s    
z _FunctionTransport.capture_eventN)r    r!   r"   r   r   r   r   r   r   r^      s   r^   c                 C   sj   | d }|d krt }n@zt|t W n, tk
rP   t|rHt| Y S | Y S X |}| d rf|| S d S )NZ	transportr   )r$   
issubclasstype	TypeErrorcallabler^   )r   Zref_transportZtransport_clsr   r   r   make_transport   s    
re   )#
__future__r   rB   r?   r,   rR   r8   r   r   Zsentry_sdk.constsr   Zsentry_sdk.utilsr   r   r   Zsentry_sdk.workerr	   ZClientOptionsZTypeZAnyOptionalDictUnionCallablerX   rW   Zurllib.requestr
   ImportErrorurllibobjectr   r$   r^   re   r   r   r   r   <module>   s"   '|