
    =h                         d dl Z d dlmZmZmZ d dlmZm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  G d d	      Zy)
    N)ExceptionHandlersStatusHandlerswrap_app_handling_exceptions)HTTPExceptionWebSocketException)Request)PlainTextResponseResponse)ASGIAppReceiveScopeSend)	WebSocketc            
       F   e Zd Z	 	 ddedej
                  ej                  ej                  ej                  e	e
gef   f      deddfdZdej                  eej                   e
   f   dej                  e	e
gef   ddfd	Zd
edededdfdZde	de
defdZdede
ddfdZy)ExceptionMiddlewareNapphandlersdebugreturnc                     || _         || _        i | _        t        | j                  t
        | j                  i| _        |+|j                         D ]  \  }}| j                  ||        y y N)
r   r   _status_handlersr   http_exceptionr   websocket_exception_exception_handlersitemsadd_exception_handler)selfr   r   r   keyvalues         o/var/www/html/phonemate/phone_mate_backend/venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py__init__zExceptionMiddleware.__init__   sl     
024.. 8 87
  &nn.
U**36 /      exc_class_or_status_codehandlerc                     t        |t              r|| j                  |<   y t        |t              sJ || j
                  |<   y r   )
isinstanceintr   
issubclass	Exceptionr   )r   r$   r%   s      r!   r   z)ExceptionMiddleware.add_exception_handler#   sB    
 .4>ED!!":;6	BBBAHD$$%=>r#   scopereceivesendc                 "  K   |d   dvr| j                  |||       d {    y | j                  | j                  f|d<   |d   dk(  rt        |||      }nt	        |||      } t        | j                   |      |||       d {    y 7 j7 w)Ntype)http	websocketzstarlette.exception_handlersr0   )r   r   r   r   r   r   )r   r+   r,   r-   conns        r!   __call__zExceptionMiddleware.__call__.   s     = 55((5'4000 $$!!1
,- =F"5'40DUGT2D:*488T:5'4PPP 1 	Qs"   BBA$BBBBrequestexcc                     t        |t              sJ |j                  dv r!t        |j                  |j                        S t        |j                  |j                  |j                        S )N>   0     )status_codeheaders)r'   r   r9   r
   r:   r	   detail)r   r4   r5   s      r!   r   z"ExceptionMiddleware.http_exception@   sS    #}---??j(MM JJCOOS[[
 	
r#   r1   c                    K   t        |t              sJ |j                  |j                  |j                         d {    y 7 w)N)codereason)r'   r   closer=   r>   )r   r1   r5   s      r!   r   z'ExceptionMiddleware.websocket_exceptionH   s5     #1222oo388CJJo???s   =AA A)NF)__name__
__module____qualname__r   typingOptionalMappingAnyCallabler   r*   r
   boolr"   Unionr(   Typer   r   r   r   r3   r   r   r    r#   r!   r   r      s    77 //NN6::v7KX7U'VVW
7 7 
7&	I"(,,sFKK	4J/J"K	I '9!5x!?@	I 
		IQE QG Q4 QD Q$
g 
I 
( 
@9 @9 @QU @r#   r   )rC   starlette._exception_handlerr   r   r   starlette.exceptionsr   r   starlette.requestsr   starlette.responsesr	   r
   starlette.typesr   r   r   r   starlette.websocketsr   r   rK   r#   r!   <module>rR      s3     
 C & ; 9 9 *;@ ;@r#   