
    fi!              
          d dl Z d dlZd dl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 er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mZ d d
lmZ  ej        d          ZdZdZ G d d          Z	 d dlmZ d dl m!Z!m"Z"m#Z# d dl$m%Z% dZ&dZ'dZ(dZ)dZ* e+d  e e,e*-                                e*.                                           D                       Z/ G d de          Z0n# e1$ r dZ%Y nw xY wd Z2dS )    N)chainproduct)TYPE_CHECKING)Any)Callable)Dict)Optional)Self)loggerenv_to_boolcapture_internal_exceptions)Envelope	spotlightzhttp://localhost:8969/streamz(sentry_sdk.spotlight.SpotlightMiddlewarec                       e Zd Zd Zd ZdS )SpotlightClientc                 R    || _         t          j                    | _        d| _        d S )Nr   )urlurllib3PoolManagerhttpfails)selfr   s     d/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/sentry_sdk/spotlight.py__init__zSpotlightClient.__init__%   s$    '))	


    c                    t          j                    }|                    |           	 | j                            | j        |                                dddi          }|                                 d| _        d S # t          $ r}| j        dk     r2t          j        t          |                     | xj        dz  c_        n;| j        dk    r*| xj        dz  c_        t          j        d           Y d }~d S Y d }~d S Y d }~d S d }~ww xY w)	NPOSTContent-Typezapplication/x-sentry-envelope)r   bodymethodheadersr         z]Looks like Spotlight is not running, will keep trying to send events but will not log errors.)ioBytesIOserialize_intor   requestr   getvaluecloser   	Exceptionsentry_loggerwarningstr)r   enveloper   reqes        r   capture_envelopez SpotlightClient.capture_envelope+   s:   z||%%%	)##H]]__"$C	 $  C IIKKKDJJJ 	 	 	zA~~%c!ff---

a


q

a

%s         ! 




	s   AA> >
DA,DDN)__name__
__module____qualname__r   r1    r   r   r   r   $   s2              r   r   )MiddlewareMixin)HttpResponseServerErrorHttpResponseHttpRequest)settingsz/assets/main.jsz<script>window.__spotlight = {{ initOptions: {{ sidecarUrl: '{spotlight_url}', fullPage: false }} }};</script>
<script type="module" crossorigin src="{spotlight_js_url}"></script>
z<html><base href="{spotlight_url}">
<script>window.__spotlight = {{ initOptions: {{ fullPage: true, startFrom: "/errors/{event_id}" }}}};</script>
zcharset=r   c              #   f   K   | ],}d                      d                    |                    V  -dS )z</{}> N)formatjoin).0charss     r   	<genexpr>rA   W   sL       ) ) 	rwwu~~&&) ) ) ) ) )r   c                   H     e Zd ZdZdZ fdZed             Zd Zd Z	 xZ
S )SpotlightMiddlewareNc                 *   t                                          |           dd l}|j        | _        | j                                        j        }|t          j        d           d S t          j
                            |j        d          | _        d S )Nr   zPCannot find Spotlight client from SpotlightMiddleware, disabling the middleware.z../)superr   sentry_sdk.apiapi
sentry_sdk
get_clientr   r+   r,   urllibparseurljoinr   _spotlight_url)r   get_responserH   spotlight_client	__class__s       r   r   zSpotlightMiddleware.__init__`   s    GG\***!!!!(nDO#99;;E'%f   t"(,"6"67G7KU"S"SDr   c                    | j         | j        	 t          j                            | j         t
                    }t          j                            |d          }t          j                            |           t          
                    | j         |          | _        n8# t          j        j        $ r!}t          j        d||           Y d }~nd }~ww xY w| j        S )NHEAD)r    )spotlight_urlspotlight_js_urlzUCannot get Spotlight JS to inject at %s. SpotlightMiddleware will not be very useful.)exc_info)rM   _spotlight_scriptrJ   rK   rL   SPOTLIGHT_JS_ENTRY_PATHr'   RequesturlopenSPOTLIGHT_JS_SNIPPET_PATTERNr=   errorURLErrorr+   debug)r   rT   r/   errs       r   spotlight_scriptz$SpotlightMiddleware.spotlight_scriptq   s    ".43I3Q'-|';';+-D( ($ !.00(% 1  C N**3///-I-P-P&*&9)9 .Q . .D** |,   !'o(!$         ))s   BB! !C5CCc                     t          d j                            dd                                                              d          D                       }|d         }t          |          dk    rC|d                             t                    r#|d         t          t                    d          nd| j        j	        s|dk    rt          j
                  }| j                                      }t          d	 fd
t          D             D             |          }j
        d |         |z   j
        |d          z   _
                            d          r|t          |          z   j        d<   S )Nc              3   >   K   | ]}|                                 V  d S N)strip)r?   ps     r   rA   z7SpotlightMiddleware.process_response.<locals>.<genexpr>   s>       ( ( 		( ( ( ( ( (r   r   r<   ;r   r#   utf-8z	text/htmlc              3   &   K   | ]}|d k    |V  dS )Nr5   )r?   idxs     r   rA   z7SpotlightMiddleware.process_response.<locals>.<genexpr>   s8         88 
 $888 r   c              3   r   K   | ]1}j                             |                                        V  2d S rb   )contentrfindencode)r?   body_variantencodingresponses     r   rA   z7SpotlightMiddleware.process_response.<locals>.<genexpr>   sV       $ $ , %,22<3F3Fx3P3PQQ$ $ $ $ $ $r   zContent-Length)tupler!   getlowersplitlen
startswithCHARSET_PREFIXr_   	streamingrk   rm   nextBODY_CLOSE_TAG_POSSIBILITIES
has_header)	r   _requestrp   content_type_headercontent_typecontent_length	injectioninjection_sitero   s	     `     @r   process_responsez$SpotlightMiddleware.process_response   s   "' ( (!)--nbAAGGIIOOPSTT( ( ( # # /q1L&''!++0CA0F0Q0Q1 1+ /q1#n2E2E2G2GH" %1 * 2 K//!$X%5!6!6 188BB	!% $ $ $ $ $0L$ $ $   #
" 
" $_n_5 &~78   &&'788 Y9G#i..9XH$%56Or   c           	         t           j        r| j        sd S 	 t          j                            | j                                                                      d          }| j        	                    |          }t          |                    dt                              | j        |                              S # t          j        j        $ r Y d S w xY w)Nrf   z<html>)rS   event_id)r:   DEBUGrM   rJ   r'   rY   readdecoderH   capture_exceptionr7   replaceSPOTLIGHT_ERROR_PAGE_SNIPPETr=   r[   r\   )r   r|   	exceptionr   r   s        r   process_exceptionz%SpotlightMiddleware.process_exception   s    > )< tN**4+>??DDFFMMgVV   ?<<YGG.%% 4;;*.*= <     	 <(   tts   A	B< <CC)r2   r3   r4   rV   rM   r   propertyr_   r   r   __classcell__)rP   s   @r   rC   rC   \   s         	T 	T 	T 	T 	T" 
	* 	* 
	*2+	 +	 +	Z	 	 	 	 	 	 	r   rC   c                    t          j        t          j                  }|                    t          j        d                     t                              |           t                              t           j	                   | 
                    d          }|du rt          }t          |t                    sd S t                      5  t          t          j        rt#          t$          j        
                    dd                    rt#          t$          j        
                    dd                    ret          j        }t*          |vrP t-          |          t/          |t*          f                    t          _        t                              d           d d d            n# 1 swxY w Y   t3          |          }t                              d|           |S )	Nz' [spotlight] %(levelname)s: %(message)sr   TSENTRY_SPOTLIGHT_ON_ERROR1SENTRY_SPOTLIGHT_MIDDLEWAREz(Enabled Spotlight integration for Djangoz%Enabled Spotlight using sidecar at %s)loggingStreamHandlersysstderrsetFormatter	Formatterr   
addHandlersetLevelINFOrr   DEFAULT_SPOTLIGHT_URL
isinstancer-   r   r:   r   r   osenviron
MIDDLEWARE DJANGO_SPOTLIGHT_MIDDLEWARE_PATHtyper   infor   )options_handlerr   
middlewareclients        r   setup_spotlightr      s   $SZ00H'+,UVVWWW
h
OOGL!!!
++k
"
"C
d{{#c3 t	$	&	& H H  !BJNN+FLLMM ! BJNN+H#NNOO !
 ",J/zAA&6d:&6&6*'G&IJJ' '# FGGGH H H H H H H H H H H H H H H S!!F
KK7===Ms   	CF((F,/F,)3r$   r   r   urllib.parserJ   urllib.requesturllib.errorr   r   	itertoolsr   r   typingr   r   r   r   r	   r
   sentry_sdk.utilsr   r+   r   r   sentry_sdk.enveloper   	getLoggerr   r   r   django.utils.deprecationr6   django.httpr7   r8   r9   django.confr:   rW   rZ   r   rw   BODY_TAG_NAMErq   zipupperrs   rz   rC   ImportErrorr   r5   r   r   <module>r      s   				  				              



 $ $ $ $ $ $ $ $                      
 ) ( ( ( ( ( 
	;	'	' 7 #M         FH888888NNNNNNNNNN$$$$$$/	Q !
	{ !  NM#(5 ) )Wcc-"5"5"7"79L9L9N9NOOP) ) ) $ $ 
p p p p po p p p pd    HHH         s   A4C6 6D ?D 