
    &g"                     ~    d Z ddlZddlZddlmZmZmZmZmZm	Z	m
Z
  ej        e          Z G d d          Zd ZdS )z
oauthlib.oauth2.rfc6749
~~~~~~~~~~~~~~~~~~~~~~~

This module is an implementation of various logic needed
for consuming and providing OAuth 2.0 RFC6749.
    N   )FatalClientErrorInvalidClientErrorInvalidRequestErrorOAuth2ErrorServerErrorTemporarilyUnavailableErrorUnsupportedTokenTypeErrorc                       e Zd Zd Zed             Zej        d             Zed             Zej        d             Zed             Zej        d             Zd Z	d	 Z
d
 Zd Zd ZdS )BaseEndpointc                 0    d| _         d| _        d | _        d S )NTF)
_available_catch_errors_valid_request_methodsselfs    X/var/www/api/venv/lib/python3.11/site-packages/oauthlib/oauth2/rfc6749/endpoints/base.py__init__zBaseEndpoint.__init__   s    "&*###    c                     | j         S Nr   r   s    r   valid_request_methodsz"BaseEndpoint.valid_request_methods   s    **r   c                 0    |d |D             }|| _         d S )Nc                 6    g | ]}|                                 S  )upper).0xs     r   
<listcomp>z6BaseEndpoint.valid_request_methods.<locals>.<listcomp>!   s     $N$N$N1QWWYY$N$N$Nr   r   )r   r   s     r   r   z"BaseEndpoint.valid_request_methods   s+     ,$N$N8M$N$N$N!&;###r   c                     | j         S r   r   r   s    r   	availablezBaseEndpoint.available%   s
    r   c                     || _         d S r   r"   )r   r#   s     r   r#   zBaseEndpoint.available)   s    #r   c                     | j         S r   r   r   s    r   catch_errorszBaseEndpoint.catch_errors-   s    !!r   c                     || _         d S r   r&   )r   r'   s     r   r'   zBaseEndpoint.catch_errors1   s    )r   c                 6    |j         st          |d          dS )zRaise error on missing token.zMissing token parameter.requestdescriptionN)tokenr   r   r+   s     r   _raise_on_missing_tokenz$BaseEndpoint._raise_on_missing_token5   s9    } 	N%g2LN N N N	N 	Nr   c                 ^   | j                             |          rG| j                             |          s+t                              d|           t          |          dS | j                             |j        |          s+t                              d|           t          |          dS )z&Raise on failed client authentication.z!Client authentication failed, %r.r+   N)request_validatorclient_authentication_requiredauthenticate_clientlogdebugr   authenticate_client_id	client_idr.   s     r   _raise_on_invalid_clientz%BaseEndpoint._raise_on_invalid_client:   s    !@@II 	6)==gFF :		=wGGG(9999: : '>>w?PRYZZ 	6II97CCC$W5555	6 	6r   c                 t    |j         r,|j         | j        v r |j         | j        vrt          |          dS dS dS )zRaise on unsupported tokens.r1   N)token_type_hintvalid_token_typessupported_token_typesr
   r.   s     r   _raise_on_unsupported_tokenz(BaseEndpoint._raise_on_unsupported_tokenD   sV    # 	=#t'===#4+EEE+G<<<<	= 	===EEr   c                     | j         t          d          |j                                        | j         vr+t	          |d|j                                        z            d S )Nz0Configure "valid_request_methods" property firstzUnsupported request method %sr*   )r   
ValueErrorhttp_methodr   r   r.   s     r   _raise_on_bad_methodz!BaseEndpoint._raise_on_bad_methodK   su    %-OPPP$$&&d.HHH%g3RU\UhUnUnUpUp3ps s s s IHr   c                 |    |j                                         dk    r|j        pd}|rt          |d          dS dS )z/Raise if invalid POST request received
        POST z$URL query parameters are not allowedr*   N)rA   r   	uri_queryr   )r   r+   query_paramss      r   _raise_on_bad_post_requestz'BaseEndpoint._raise_on_bad_post_requestR   sh     $$&&&00",2L `)'7]` ` ` ` 10` `r   N)__name__
__module____qualname__r   propertyr   setterr#   r'   r/   r9   r>   rB   rH   r   r   r   r   r      s'       + + +
 + + X+ !< < "!<   X $ $ $ " " X" * * *N N N
6 6 6= = =s s s` ` ` ` `r   r   c                 F     t          j                    fd            }|S )Nc                    | j         s5t                      }t                              d|z             i |j        dfS | j        rn	  | |g|R i |S # t          $ r  t          $ r  t          $ r?}t                      }t          
                    d|z             i |j        dfcY d }~S d }~ww xY w | |g|R i |S )Nz*Endpoint unavailable, ignoring request %s.i  z.Exception caught while processing request, %s.i  )r#   r	   r5   infojsonr'   r   r   	Exceptionr   warning)endpointuriargskwargseerrorfs         r   wrapperz0catch_errors_and_unavailability.<locals>.wrapper\   s&   ! 	#+--AHHACGHHHqvs?"  	5
+q38888888   #    + + +#DqHJ J J5:s*******	+ 1Xs4T444V444s   A B014B+%B0+B0)	functoolswraps)rZ   r[   s   ` r   catch_errors_and_unavailabilityr^   [   s8    _Q5 5 5 5 5( Nr   )__doc__r\   loggingerrorsr   r   r   r   r   r	   r
   	getLoggerrI   r5   r   r^   r   r   r   <module>rc      s                          
 g!!F` F` F` F` F` F` F` F`P    r   