
    h9                     Z    d Z ddlmZ ddlZ G d dej
                        Z G d d      Zy)zException handler    )HTTPExceptionNc                       e Zd ZdZej
                  j                  ddi      Zej
                  j                  ddi      Z	ej
                  j                  ddi      Z
ej
                  j                  ddi      Zy)	ErrorSchemaztSchema describing the error payload

    Not actually used to dump payload, but only for documentation purposes
    descriptionz
Error code)metadataz
Error namezError messageErrorsN)__name__
__module____qualname____doc__mafieldsIntegercodeStringstatusmessageDicterrors     U/var/www/html/engine/venv/lib/python3.12/site-packages/flask_smorest/error_handler.pyr   r      sv    
 99}l&CDDYY|'DEFii(HIGYY^^mX%>^?Fr   r   c                        e Zd ZdZeZd Zd Zy)ErrorHandlerMixinz$Extend Api to manage error handling.c                 X    | j                   j                  t        | j                         y)z{Register error handlers in Flask app

        This method registers a default error handler for ``HTTPException``.
        N)_appregister_error_handlerr   handle_http_exception)selfs    r   _register_error_handlersz*ErrorHandlerMixin._register_error_handlers   s    
 			((8R8RSr   c                     i }|j                   |j                  d}t        |dd      }|r.d|v r|d   |d<   d|v r	|d   |d<   nd|v r|d   |d<   d|v r|d   }||j                   |fS )a  Return a JSON response containing a description of the error

        This method is registered at app init to handle ``HTTPException``.

        - When ``abort`` is called in the code, an ``HTTPException`` is
          triggered and Flask calls this handler.

        - When an exception is not caught in a view, Flask makes it an
          ``InternalServerError`` and calls this handler.

        flask-smorest republishes webargs's
        :func:`abort <webargs.flaskparser.abort>`. This ``abort`` allows the
        caller to pass kwargs and stores them in ``exception.data`` so that the
        error handler can use them to populate the response payload.

        Extra information expected by this handler:

        - `message` (``str``): a comment
        - `errors` (``dict``): errors, typically validation errors in
            parameters and request body
        - `headers` (``dict``): additional headers
        )r   r   dataNr   r   messagesheaders)r   namegetattr)r   errorr$   payloadr"   s        r   r   z'ErrorHandlerMixin.handle_http_exception!   s    .  ::< ufd+D %))_	"4$(N! t#$($4!D y/

G++r   N)r	   r
   r   r   r   ERROR_SCHEMAr    r   r   r   r   r   r      s    . LT,,r   r   )r   werkzeug.exceptionsr   marshmallowr   Schemar   r   r   r   r   <module>r-      s*     - 	@")) 	@9, 9,r   