
    fi%                     $   d dl Z d dlmZmZ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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mZ 	 d dlZd dlmZ n# e$ r  ed          w xY w	 d dlZej        Zej        Z dZ!n# e$ r d dl"Zej#        Zej$        Z dZ!Y nw xY wdZ%e!r( e            5  d dl&m'Z% ddd           n# 1 swxY w Y    G d de          Z( G d d          Z)dZ* G d de          Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2dS )    N)_check_minimum_versionIntegrationDidNotEnable)RequestExtractor)SentryWsgiMiddleware)SOURCE_FOR_STYLE)capture_internal_exceptionsensure_integration_enabledevent_from_exceptionparse_version)TYPE_CHECKING)Any)Dict)Optional)EventEventProcessor)__version__zFalcon not installedTF)_UNSETc                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )FalconRequestExtractorc                     | j         j        S N)requestenvselfs    n/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/sentry_sdk/integrations/falcon.pyr   zFalconRequestExtractor.env5   s    |    c                     | j         j        S r   )r   cookiesr   s    r   r    zFalconRequestExtractor.cookies9   s    |##r   c                     d S r    r   s    r   formzFalconRequestExtractor.form=       tr   c                     d S r   r"   r   s    r   fileszFalconRequestExtractor.filesA   r$   r   c                 >    |                                  }|dk    rdS d S )Nr   z[REQUEST_CONTAINING_RAW_DATA])content_length)r   r(   s     r   raw_datazFalconRequestExtractor.raw_dataE   s+     ,,..A224r   c                     d }t                      5  | j        j        }d d d            n# 1 swxY w Y   |t          ur|S d S r   )r	   r   _media_FALCON_UNSET)r   cached_medias     r   jsonzFalconRequestExtractor.jsonR   s     (** 	/ 	/  <.L	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ },,ts   *..N)	__name__
__module____qualname__r   r    r#   r&   r)   r.   r"   r   r   r   r   4   sn             $ $ $          r   r   c                       e Zd ZdZd ZdS )SentryFalconMiddlewarez9Captures exceptions in Falcon requests and send to Sentryc                     t          j                                        t                    }|d S t          j                    }d|_        |                    t          ||                     d S )Nfalcon)
sentry_sdk
get_clientget_integrationFalconIntegrationget_isolation_scope_nameadd_event_processor_make_request_event_processor)r   reqrespargskwargsintegrationscopes          r   process_requestz&SentryFalconMiddleware.process_requesth   sd     +--==>OPPF.00!!"?["Q"QRRRRRr   N)r/   r0   r1   __doc__rD   r"   r   r   r3   r3   e   s.        CCS S S S Sr   r3   uri_templatepathc                   >    e Zd ZdZde ZdZddZed             ZdS )	r9   r5   z
auto.http. rG   c                 \    |t           vrt          d|dt           d          || _        d S )Nz%Invalid value for transaction_style: z (must be in ))TRANSACTION_STYLE_VALUES
ValueErrortransaction_style)r   rO   s     r   __init__zFalconIntegration.__init__|   sJ    $<<<*$$$&>&>&>@   "3r   c                      t          t                    } t          t          |            t	                       t                       t                       d S r   )r   FALCON_VERSIONr   r9   _patch_wsgi_app_patch_handle_exception_patch_prepare_middleware)versions    r   
setup_oncezFalconIntegration.setup_once   sL      //0':::!!!!#####r   N)rG   )	r/   r0   r1   
identifieroriginrO   rP   staticmethodrW   r"   r   r   r9   r9   v   s[        J&*&&F3 3 3 3 $ $ \$ $ $r   r9   c                  B    t           j        fd} | t           _        d S )Nc                      t          j                                        t                    }|  ||          S t	           fdt          j                  } |||          S )Nc                      | |          S r   r"   )envi
start_resporiginal_wsgi_appr   s     r   <lambda>zB_patch_wsgi_app.<locals>.sentry_patched_wsgi_app.<locals>.<lambda>   s    %6%6tT:%N%N r   )span_origin)r6   r7   r8   r9   r   rY   )r   r   start_responserB   sentry_wrappedr`   s   `    r   sentry_patched_wsgi_appz0_patch_wsgi_app.<locals>.sentry_patched_wsgi_app   sy     +--==>OPP$$T3???-NNNNN)0
 
 

 ~c>222r   )falcon_app_class__call__)re   r`   s    @r   rS   rS      s6    (13 3 3 3 3 !8r   c                  x    t           j        t          t                    fd            } | t           _        d S )Nc                    d x}}t                      5  t          d |D                       }t          d |D                       }d d d            n# 1 swxY w Y    | g|R  }|||S t          ||          rDt          |t	          j                    j        ddd          \  }}t	          j        ||           |S )Nc              3   D   K   | ]}t          |t                    |V  d S r   )
isinstance	Exception.0arguments     r   	<genexpr>zS_patch_handle_exception.<locals>.sentry_patched_handle_exception.<locals>.<genexpr>   s1      WW8z(I7V7VWhWWWWWWr   c              3   N   K   | ] }t          |t          j                  |V  !d S r   )rk   r5   Responserm   s     r   rp   zS_patch_handle_exception.<locals>.sentry_patched_handle_exception.<locals>.<genexpr>   sG        %Hfo1V1V     r   r5   F)typehandled)client_options	mechanism)hint)r	   next_exception_leads_to_http_5xxr   r6   r7   optionscapture_event)r   r@   exresponsewas_handledeventrw   original_handle_exceptions          r   sentry_patched_handle_exceptionz@_patch_handle_exception.<locals>.sentry_patched_handle_exception   sH    X(** 	 	WWtWWWWWB  )-    H	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 0/<t<<<:) 'H55 	7.)466>#+>>  KE4
 $U6666s   3AAA)rf   _handle_exceptionr
   r9   )r   r   s    @r   rT   rT      sO     0 B 13LMM    NM< *I&&&r   c                  F    t           j        	 dfd	} | t           _        d S )NFc                     |r | ||          S t          j                                        t                    }|t	                      g| pg z   }  | |          S r   )r6   r7   r8   r9   r3   )
middlewareindependent_middlewareasgirB   original_prepare_middlewares       r   !sentry_patched_prepare_middlewarezD_patch_prepare_middleware.<locals>.sentry_patched_prepare_middleware   sv      	Y..z;QSWXXX +--==>OPP"0223z7GRHJ +*:7MNNNr   )NFF)falcon_helpersprepare_middleware)r   r   s    @r   rU   rU      sG    "0"C =BO O O O O O  )JN%%%r   c                     t          | t          j                  o| j        pd                    d          }t          | t          j        t          j        j        f           }|s|ot           pt          |          S )NrJ   5)	rk   r5   	HTTPErrorstatus
startswithhttp_status
HTTPStatusFALCON3_has_http_5xx_status)r|   r}   is_server_erroris_unhandled_errors       r   ry   ry      s     V%566 BIO;W;W< <O (
Vv1<=   11 5+H55r   c                 6    | j                             d          S )Nr   )r   r   )r}   s    r   r   r      s    ?%%c***r   c                 ^    |j         |j        d}||         | d<   dt          |         i| d<   d S )NrF   transactionsourcetransaction_info)rG   rH   r   )r   rO   r   name_for_styles       r    _set_transaction_name_and_sourcer      sJ      , N **;<E-!)+;<M+N OE
r   c                       fd}|S )Nc                     t          | j                   t                      5  t                                        |            d d d            n# 1 swxY w Y   | S r   )r   rO   r	   r   extract_into_event)r   rw   rB   r>   s     r   event_processorz6_make_request_event_processor.<locals>.event_processor  s    (0MsSSS(** 	B 	B"3''::5AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B s   #AAAr"   )r>   rB   r   s   `` r   r=   r=     s*          r   )3r6   sentry_sdk.integrationsr   r   r   $sentry_sdk.integrations._wsgi_commonr   sentry_sdk.integrations.wsgir   sentry_sdk.tracingr   sentry_sdk.utilsr	   r
   r   r   typingr   r   r   r   sentry_sdk._typesr   r   r5   r   rR   ImportErrorfalcon.app_helpersapp_helpersr   Apprf   r   falcon.api_helpersapi_helpersAPIr,   falcon.requestr   r   r3   rM   r9   rS   rT   rU   ry   r   r   r=   r"   r   r   <module>r      sR       U U U U U U U U U U A A A A A A = = = = = = / / / / / /            !           877777777
/MMM4444444 / / /
,-
.
../'NzGG   'NzGGG 
 ;	$	$	&	& ; ;::::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;. . . . .- . . .bS S S S S S S S 4 $ $ $ $ $ $ $ $68 8 8(#I #I #ILJ J J.  &+ + +
P P P    s0   
A A,0B B! B!2CC	C	