
    |h                         d Z ddlZddlmZ  G d dej                  ej
                           Z e       Zej                  Zej                  Z	y)a  Bottle request argument parsing module.

Example: ::

    from bottle import route, run
    from marshmallow import fields
    from webargs.bottleparser import use_args

    hello_args = {"name": fields.Str(load_default="World")}


    @route("/", method="GET", apply=use_args(hello_args))
    def index(args):
        return "Hello " + args["name"]


    if __name__ == "__main__":
        run(debug=True)
    N)corec                   F    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)BottleParserz"Bottle.py request argument parser.c                 8    t        j                  dddgi|      )Ni  jsonzInvalid JSON body.)statusbody	exception)bottle	HTTPError)selferrorreqargskwargss        S/var/www/html/test/engine/venv/lib/python3.12/site-packages/webargs/bottleparser.py_handle_invalid_json_errorz'BottleParser._handle_invalid_json_error   s%    f';&<=
 	
    c                     	 |j                   }t        j                  S |S # t        $ r t        j                  cY S t        j
                  $ r-}|j                  dk(  r| j                  ||       n Y d}~id}~ww xY w)z%Read a json payload from the request.zInvalid JSONN)r   AttributeErrorr   missingr   r   r	   r   )r   r   dataerrs       r   _raw_load_jsonzBottleParser._raw_load_json"   st    	88D <<<!  	 << 	xx>)//S9 :	s   " A<A<#A77A<c                 :    | j                  |j                  |      S )z9Return query params from the request as a MultiDictProxy.)
_makeproxyqueryr   r   schemas      r   load_querystringzBottleParser.load_querystring8       syy&11r   c                     t        j                  |j                        rt         j                  S | j	                  |j
                  |      S )z8Return form values from the request as a MultiDictProxy.)r   is_jsoncontent_typer   r   formsr   s      r   	load_formzBottleParser.load_form<   s5    
 <<(()<<syy&11r   c                 :    | j                  |j                  |      S )z4Return headers from the request as a MultiDictProxy.)r   headersr   s      r   load_headerszBottleParser.load_headersE   s    s{{F33r   c                     |j                   S )z Return cookies from the request.)cookiesr   s      r   load_cookieszBottleParser.load_cookiesI   s    {{r   c                 :    | j                  |j                  |      S )z2Return files from the request as a MultiDictProxy.)r   filesr   s      r   
load_fileszBottleParser.load_filesM   r!   r   c                h    |xs | j                   }t        j                  ||j                  ||      )z\Handles errors during parsing. Aborts the current request with a
        400 error.
        )r   r	   r(   r
   )DEFAULT_VALIDATION_STATUSr   r   messages)r   r   r   r   error_status_codeerror_headersstatus_codes          r   handle_errorzBottleParser.handle_errorQ   s7     (I4+I+I!	
 	
r   c                 "    t         j                  S )z@Override to use bottle's thread-local request object by default.)r   request)r   s    r   get_default_requestz BottleParser.get_default_request]   s    ~~r   N)__name__
__module____qualname____doc__r   r   r    r&   r)   r,   r/   r6   r9    r   r   r   r      s2    ,

,2242

r   r   )
r=   r   webargsr   ParserRequestr   parseruse_args
use_kwargsr>   r   r   <module>rE      sK   (  E4;;v~~. EP 
??
r   