<!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 Z d dlmZ d dlmZmZ d dlmZmZm	Z	m
Z
 d dlmZ d dlmZmZmZ d dlmZ d dlmZmZ d d	lmZ G d
d deZdd Zdd ZG dd deZ dS )    N)iscoroutinefunction)Hub_should_send_default_pii)HAS_REAL_CONTEXTVARSevent_from_exceptioncapture_internal_exceptionstransaction_from_function)Integration)RequestExtractor_filter_headers_is_json_content_type)ignore_logger)RequestHandler	HTTPError)	coroutinec                   @   s   e Zd ZdZedd ZdS )TornadoIntegrationtornadoc                     s   dd l } t| dd }|d ks$|dk r,tdts8tdtd td tj t }|rh fdd	}nt fd
d	}|t_tj	fdd}|t_	d S )Nr   version_info)   r   zTornado 5+ requiredzUThe tornado integration for Sentry requires Python 3.6+ or the aiocontextvars packageztornado.applicationztornado.accessc              
      s   t j}|t}|d kr. | f||I d H S t| }t |N}| }|  |t	| W 5 Q R X  | f||I d H W  5 Q R  S Q R X d S N)
r   currentget_integrationr   weakrefrefconfigure_scopeZclear_breadcrumbsadd_event_processor_make_event_processor)selfargskwargshubintegrationweak_handlerscopeold_execute P/opt/alt/python38/lib/python3.8/site-packages/sentry_sdk/integrations/tornado.pysentry_execute_request_handler;   s    



zETornadoIntegration.setup_once.<locals>.sentry_execute_request_handlerc              
   ?   s   t j}|t}|d kr( | f||S t| }t |J}| }|t| W 5 Q R X  | f||E d H }|W  5 Q R  S Q R X d S r   )	r   r   r   r   r   r   r   r   r   )r   r   r   r    r!   r"   r#   resultr$   r&   r'   r(   L   s    



c                    s"   t |||  | |||f||S r   )_capture_exception)r   tyvaluetbr   r   )old_log_exceptionr&   r'   sentry_log_exception_   s    z;TornadoIntegration.setup_once.<locals>.sentry_log_exception)
r   getattrRuntimeErrorr   r   r   Z_executer   r   Zlog_exception)r   Ztornado_versionZ	awaitabler(   r/   r&   )r%   r.   r'   
setup_once!   s(    zTornadoIntegration.setup_onceN)__name__
__module____qualname__
identifierstaticmethodr2   r&   r&   r&   r'   r      s   r   c                 C   sZ   t j}|td krd S t|tr&d S t| ||f|jjdddd\}}|j	||d d S )Nr   F)typeZhandled)Zclient_optionsZ	mechanism)hint)
r   r   r   r   
isinstancer   r   ZclientoptionsZcapture_event)r+   r,   r-   r    eventr9   r&   r&   r'   r*   g   s    

r*   c                    s    fdd}|S )Nc              	      s     }|d kr| S |j }t $ t||j j }t|| d< W 5 Q R X t l t|}||  | d }d|j|j	|j
f |d< |j|d< |j|d< d|ji|d< tt|j|d	< W 5 Q R X t " |jrt rd
| di d< W 5 Q R X | S )NZtransactionrequestz	%s://%s%surlZquery_stringmethodZREMOTE_ADDRenvheadersTuserZis_authenticated)r=   r   r0   r?   lowerr   TornadoRequestExtractorZextract_into_eventZprotocolhostpathqueryZ	remote_ipr   dictrA   Zcurrent_userr   
setdefault)r<   r9   handlerr=   r?   Z	extractorZrequest_infor"   r&   r'   tornado_processorz   s0    



z0_make_event_processor.<locals>.tornado_processorr&   )r"   rL   r&   rK   r'   r   x   s    #r   c                   @   sD   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S )rD   c                 C   s   | j jd krdS t| j jS )Nr   )r=   bodylenr   r&   r&   r'   content_length   s    z&TornadoRequestExtractor.content_lengthc                 C   s   dd | j j D S )Nc                 S   s   i | ]\}}||j qS r&   )r,   .0kvr&   r&   r'   
<dictcomp>   s      z3TornadoRequestExtractor.cookies.<locals>.<dictcomp>)r=   cookiesitemsrO   r&   r&   r'   rV      s    zTornadoRequestExtractor.cookiesc                 C   s   | j jS r   )r=   rM   rO   r&   r&   r'   raw_data   s    z TornadoRequestExtractor.raw_datac                 C   s   dd | j j D S )Nc                 S   s    i | ]\}}|d d |D qS )c                 S   s   g | ]}| d dqS )latin1replace)decode)rR   rT   r&   r&   r'   
<listcomp>   s     z;TornadoRequestExtractor.form.<locals>.<dictcomp>.<listcomp>r&   )rR   rS   vsr&   r&   r'   rU      s    z0TornadoRequestExtractor.form.<locals>.<dictcomp>)r=   Zbody_argumentsrW   rO   r&   r&   r'   form   s    
zTornadoRequestExtractor.formc                 C   s   t | jjdS )Nzcontent-type)r   r=   rA   getrO   r&   r&   r'   is_json   s    zTornadoRequestExtractor.is_jsonc                 C   s   dd | j j D S )Nc                 S   s   i | ]\}}|r||d  qS )r   r&   rQ   r&   r&   r'   rU      s       z1TornadoRequestExtractor.files.<locals>.<dictcomp>)r=   filesrW   rO   r&   r&   r'   ra      s    zTornadoRequestExtractor.filesc                 C   s   t |jp
dS )Nr&   )rN   rM   )r   filer&   r&   r'   size_of_file   s    z$TornadoRequestExtractor.size_of_fileN)
r3   r4   r5   rP   rV   rX   r^   r`   ra   rc   r&   r&   r&   r'   rD      s   rD   )!r   inspectr   Zsentry_sdk.hubr   r   Zsentry_sdk.utilsr   r   r   r   Zsentry_sdk.integrationsr	   Z$sentry_sdk.integrations._wsgi_commonr
   r   r   Zsentry_sdk.integrations.loggingr   Ztornado.webr   r   Ztornado.genr   ZAnyZListOptionalDictCallabler   r*   r   rD   r&   r&   r&   r'   <module>   s   
I(