
    i                         d dl 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
 d dlmZ  e j                  e      Z G d de      Zd	ed
edefdZ G d de
      Zy)    N)Request)AnyOptionalDict)JSONResponse)BaseHTTPMiddleware)ResponseWrapperc            
       F    e Zd Z	 	 ddededeeeef      ddfdZdefdZ	y)	HTTPExceptionNstatus_codedetailheadersreturnc                 .    || _         || _        || _        y )N)r   r   r   )selfr   r   r   s       </var/www/html/ls-ibe-bot-apis-staging/app/exceptions/http.py__init__zHTTPException.__init__   s     '    c                     g }| j                   j                         D ]-  \  }}|j                  d      r|j                  | d|       / | j                  j
                   ddj                  |       dS )zvClass custom __repr__ method implementation.

        Returns:
            str: HTTPException string object.

        _=(z, ))__dict__items
startswithappend	__class____name__join)r   kwargskeyvalues       r   __repr__zHTTPException.__repr__   sq     ----/JC>>#&Qui01 0 ..))*!DIIf,=+>a@@r   )NN)
r   
__module____qualname__intr   r   r   strr   r$    r   r   r   r   
   sP    
 ,0			 	 $sCx.)		
 
	A# Ar   r   request	exceptionr   c                    K   t        |j                  t        d|j                  d       j                  |j
                        S w)NFstatusmessagedatar   contentr   )r   r   r	   r   r   r   )r*   r+   s     r   http_exception_handlerr3   '   sC     ))$$
 (!! s   AAc                       e Zd ZdefdZy)GlobalExceptionMiddlewarer*   c           	         K   	  ||       d {   S 7 # t         $ rJ}t        j                  d| d       t        dt	        ddd       j
                  dd	i
      cY d }~S d }~ww xY ww)NzError: T)exc_infoi  FzInternal server errorr-   zAccess-Control-Allow-Origin*r1   )	Exceptionlogr+   r   r	   r   )r   r*   	call_nextexcs       r   dispatchz"GlobalExceptionMiddleware.dispatch4   sq     	"7++++ 	MMGC5/DM9' 3 (6< 	s<   A,  A, 	A)?A$A)A,$A))A,N)r   r%   r&   r   r=   r)   r   r   r5   r5   3   s    g r   r5   )loggingfastapir   typingr   r   r   fastapi.responsesr   starlette.middleware.baser   app.schemasr	   	getLoggerr   r:   r9   r   r3   r5   r)   r   r   <module>rE      sb      & & * 8 'g!AI A:
' 
m 
P\ 
 2 r   