a
    xd                      @   s  d dl m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 d dlmZmZ d dlmZmZ d dlmZmZ d d	lmZ d d
lmZ zd dlmZ d dlmZ W n ey   edY n0 d dlmZ erVd 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) d dl*m+Z+ d dlm,Z, d dlm-Z- e.eddrndd Z/nd dl0m/Z/ dZ1G dd deZ2dd  Z3d!d" Z4G d#d$ d$eZ5d%d& Z6dS )'    )absolute_importN)Hub_should_send_default_pii)Scope)SOURCE_FOR_STYLE)capture_internal_exceptionsevent_from_exception)reraise	iteritems)IntegrationDidNotEnable)RequestExtractor)SentryWsgiMiddleware)HTTPException)RequestzPyramid not installed)MYPY)Response)Any)_ScopedResponse)Callable)Dict)Optional)RequestCookies)cgi_FieldStorage)ExcInfo)EventProcessorauthenticated_useridc                 C   s   | j S Nr   )request r    W/var/www/html/Ranjet/env/lib/python3.9/site-packages/sentry_sdk/integrations/pyramid.pyr   ,   s    r   
route_nameZroute_patternc                   @   s*   e Zd ZdZdZd	ddZedd ZdS )
PyramidIntegrationpyramid r#   c                 C   s"   |t vrtd|t f || _d S )Nz7Invalid value for transaction_style: %s (must be in %s))TRANSACTION_STYLE_VALUES
ValueErrortransaction_style)selfr)   r    r    r!   __init__=   s    zPyramidIntegration.__init__c                     sf   ddl m}  | j  fdd}|| _ttdrFtjfdd}|t_| jjfdd	}|| j_d S )
Nr   )routerc                    s|   t j}|t}|d urd| 4}t||j| |tt	
|| W d    n1 sZ0    Y   | |g|R i |S r   )r   currentget_integrationr$   Zconfigure_scope _set_transaction_name_and_sourcer)   Zadd_event_processor_make_event_processorweakrefref)registryr   argskwargshubintegrationscope)old_call_viewr    r!   sentry_patched_call_viewM   s    

"z?PyramidIntegration.setup_once.<locals>.sentry_patched_call_viewinvoke_exception_viewc                    sN    | g|R i |}| j rJt| j rJ|jdkrJtjtd urJt| j  |S )Ni  )exc_infoallZ
status_intr   r-   r.   r$   _capture_exception)r*   r4   r5   rv)old_invoke_exception_viewr    r!   $sentry_patched_invoke_exception_viewb   s    
zKPyramidIntegration.setup_once.<locals>.sentry_patched_invoke_exception_viewc                    s@   t j}|t}|d u r$ ||S  fdd}t|||S )Nc                    s>   z | |W S  t y8   t }t| t|  Y n0 d S r   )	Exceptionsysr<   r>   r	   )environstart_responseZeinfo)old_wsgi_callr*   r    r!   sentry_patched_inner_wsgi_call{   s    zgPyramidIntegration.setup_once.<locals>.sentry_patched_wsgi_call.<locals>.sentry_patched_inner_wsgi_call)r   r-   r.   r$   r   )r*   rD   rE   r6   r7   rG   )rF   r*   r!   sentry_patched_wsgi_callt   s    
	z?PyramidIntegration.setup_once.<locals>.sentry_patched_wsgi_call)r%   r,   Z
_call_viewhasattrr   r;   ZRouter__call__)r,   r:   rA   rI   r    )r9   r@   rF   r!   
setup_onceF   s    
zPyramidIntegration.setup_onceN)r#   )__name__
__module____qualname__
identifierr)   r+   staticmethodrL   r    r    r    r!   r$   8   s
   
	r$   c                 C   sh   | d d u st | d trd S tj}|td u r6d S |j}t| |jdddd\}}|j	||d d S )Nr   r%   F)typeZhandled)Zclient_optionsZ	mechanism)hint)

issubclassr   r   r-   r.   r$   clientr   optionsZcapture_event)r<   r6   rU   eventrS   r    r    r!   r>      s    
r>   c                 C   sD   z,|j j|j jd}| j|| t| d W n ty>   Y n0 d S )Nr"   )source)Zmatched_routenamepatternZset_transaction_namer   rB   )r8   r)   r   Zname_for_styler    r    r!   r/      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 )PyramidRequestExtractorc                 C   s   | j jS r   )r   path_urlrH   r    r    r!   url   s    zPyramidRequestExtractor.urlc                 C   s   | j jS r   )r   rD   rH   r    r    r!   env   s    zPyramidRequestExtractor.envc                 C   s   | j jS r   )r   cookiesrH   r    r    r!   r_      s    zPyramidRequestExtractor.cookiesc                 C   s   | j jS r   )r   textrH   r    r    r!   raw_data   s    z PyramidRequestExtractor.raw_datac                 C   s   dd t | jjD S )Nc                 S   s"   i | ]\}}t |d ds||qS filenameNgetattr.0keyvaluer    r    r!   
<dictcomp>   s   z0PyramidRequestExtractor.form.<locals>.<dictcomp>r
   r   POSTrH   r    r    r!   form   s    
zPyramidRequestExtractor.formc                 C   s   dd t | jjD S )Nc                 S   s"   i | ]\}}t |d dr||qS rb   rd   rf   r    r    r!   rj      s   z1PyramidRequestExtractor.files.<locals>.<dictcomp>rk   rH   r    r    r!   files   s    
zPyramidRequestExtractor.filesc                 C   s2   |j }zt| jW S  ty,   Y dS 0 d S )Nr   )fileosfstatfilenost_sizerB   )r*   Zpostdataro   r    r    r!   size_of_file   s
    z$PyramidRequestExtractor.size_of_fileN)
rM   rN   rO   r]   r^   r_   ra   rm   rn   rt   r    r    r    r!   r[      s   r[   c                    s    fdd}|S )Nc                    s     }|d u r| S t   t||  W d    n1 s<0    Y  t rt  , | di }|dt| W d    n1 s0    Y  | S )Nuserid)r   r[   Zextract_into_eventr   
setdefaultr   )rW   rS   r   Z	user_infoweak_requestr    r!   event_processor   s    ,.z._make_event_processor.<locals>.event_processorr    )ry   r7   rz   r    rx   r!   r0      s    r0   )7
__future__r   rp   rC   r1   Zsentry_sdk.hubr   r   Zsentry_sdk.scoper   Zsentry_sdk.tracingr   Zsentry_sdk.utilsr   r   Zsentry_sdk._compatr	   r
   Zsentry_sdk.integrationsr   r   Z$sentry_sdk.integrations._wsgi_commonr   Zsentry_sdk.integrations.wsgir   Zpyramid.httpexceptionsr   Zpyramid.requestr   ImportErrorZsentry_sdk._typesr   Zpyramid.responser   typingr   r   r   r   r   Zwebob.cookiesr   Zwebob.compatr   r   r   re   r   Zpyramid.securityr'   r$   r>   r/   r[   r0   r    r    r    r!   <module>   sJ   
S*