o
    ë6Wj  ã                   @   s\   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 e¡ZG dd„ dƒZd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                   @   sŠ   e Zd Zdd„ Zedd„ ƒZejdd„ ƒZedd„ ƒZejdd„ ƒZed	d
„ ƒZejdd
„ ƒZdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚBaseEndpointc                 C   s   d| _ d| _d | _d S )NTF)Ú
_availableÚ_catch_errorsÚ_valid_request_methods©Úself© r   úu/home/esfera/Documents/content_generation/venv/lib/python3.10/site-packages/oauthlib/oauth2/rfc6749/endpoints/base.pyÚ__init__   s   
zBaseEndpoint.__init__c                 C   ó   | j S ©N©r   r   r   r   r   Úvalid_request_methods   ó   z"BaseEndpoint.valid_request_methodsc                 C   s    |d urdd„ |D ƒ}|| _ d S )Nc                 S   s   g | ]}|  ¡ ‘qS r   )Úupper)Ú.0Úxr   r   r   Ú
<listcomp>!   s    z6BaseEndpoint.valid_request_methods.<locals>.<listcomp>r   )r   r   r   r   r   r      s   
c                 C   r   r   ©r   r   r   r   r   Ú	available%   r   zBaseEndpoint.availablec                 C   ó
   || _ d S r   r   )r   r   r   r   r   r   )   ó   
c                 C   r   r   ©r   r   r   r   r   Úcatch_errors-   r   zBaseEndpoint.catch_errorsc                 C   r   r   r    )r   r!   r   r   r   r!   1   r   c                 C   s   |j s	t|dd�‚dS )zRaise error on missing token.zMissing token parameter.©ÚrequestÚdescriptionN)Útokenr   ©r   r#   r   r   r   Ú_raise_on_missing_token5   s
   ÿÿz$BaseEndpoint._raise_on_missing_tokenc                 C   s\   | j  |¡r| j  |¡st d|¡ t|d�‚dS | j  |j|¡s,t d|¡ t|d�‚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&   r   r   r   Ú_raise_on_invalid_client:   s   
þ
þz%BaseEndpoint._raise_on_invalid_clientc                 C   s4   |j r|j | jv r|j | jvrt|d�‚dS dS dS )zRaise on unsupported tokens.r(   N)Útoken_type_hintÚvalid_token_typesÚsupported_token_typesr	   r&   r   r   r   Ú_raise_on_unsupported_tokenD   s   
ýz(BaseEndpoint._raise_on_unsupported_tokenc                 C   s<   | j d u r	tdƒ‚|j ¡ | j vrt|d|j ¡  d�‚d S )Nz0Configure "valid_request_methods" property firstzUnsupported request method %sr"   )r   Ú
ValueErrorÚhttp_methodr   r   r&   r   r   r   Ú_raise_on_bad_methodK   s   
ÿÿz!BaseEndpoint._raise_on_bad_methodc                 C   s0   |j  ¡ dkr|jpd}|rt|dd�‚dS dS )z/Raise if invalid POST request received
        ÚPOSTÚ z$URL query parameters are not allowedr"   N)r6   r   Ú	uri_queryr   )r   r#   Úquery_paramsr   r   r   Ú_raise_on_bad_post_requestR   s   
ÿýz'BaseEndpoint._raise_on_bad_post_requestN)Ú__name__Ú
__module__Ú__qualname__r   Úpropertyr   Úsetterr   r!   r'   r0   r4   r7   r<   r   r   r   r   r
      s&    






r
   c                    s   t  ˆ ¡‡ fdd„ƒ}|S )Nc              
      sÀ   | j stƒ }t d| ¡ i |jdfS | jrTzˆ | |g|¢R i |¤ŽW S  ty+   ‚  ty2   ‚  tyS } zt	ƒ }t 
d| ¡ i |jdfW  Y d }~S d }~ww ˆ | |g|¢R i |¤ŽS )Nz*Endpoint unavailable, ignoring request %s.i÷  z.Exception caught while processing request, %s.iô  )r   r   r,   ÚinfoÚjsonr!   r   r   Ú	Exceptionr   Úwarning)ÚendpointÚuriÚargsÚkwargsÚeÚerror©Úfr   r   Úwrapper\   s(   ÿ€üz0catch_errors_and_unavailability.<locals>.wrapper)Ú	functoolsÚwraps)rM   rN   r   rL   r   Úcatch_errors_and_unavailability[   s   rQ   )Ú__doc__rO   ÚloggingÚerrorsr   r   r   r   r   r   r	   Ú	getLoggerr=   r,   r
   rQ   r   r   r   r   Ú<module>   s    $
H