o
    ë6WjÎ  ã                   @   sB   d Z ddlZddlmZ ddlmZ e e¡ZG dd„ deƒZ	dS )	zº
oauthlib.oauth1.rfc5849.endpoints.resource
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This module is an implementation of the resource protection provider logic of
OAuth 1.0 RFC 5849.
é    Né   )Úerrorsé   )ÚBaseEndpointc                   @   s   e Zd ZdZ		ddd„ZdS )ÚResourceEndpointa!  An endpoint responsible for protecting resources.

    Typical use is to instantiate with a request validator and invoke the
    ``validate_protected_resource_request`` in a decorator around a view
    function. If the request is valid, invoke and return the response of the
    view. If invalid create and return an error response directly from the
    decorator.

    See :doc:`/oauth1/validator` for details on which validator methods to implement
    for this endpoint.

    An example decorator::

        from functools import wraps
        from your_validator import your_validator
        from oauthlib.oauth1 import ResourceEndpoint
        endpoint = ResourceEndpoint(your_validator)

        def require_oauth(realms=None):
            def decorator(f):
                @wraps(f)
                def wrapper(request, *args, **kwargs):
                    v, r = provider.validate_protected_resource_request(
                            request.url,
                            http_method=request.method,
                            body=request.data,
                            headers=request.headers,
                            realms=realms or [])
                    if v:
                        return f(*args, **kwargs)
                    else:
                        return abort(403)
    ÚGETNc                 C   s�  z
|   ||||¡}W n tjy   Y dS w z|  |¡ |  |¡ W n tjy0   d|f Y S w |js8d|fS | j |j¡sCd|fS | jj|j	|j
|j||jd�sVd|fS | j |j	|¡}|se| jj|_	| j |j	|j|¡}|sv| jj|_| jj|j	|j||j|d�}	|  |¡}
||jd< ||jd< |	|jd< |
|jd< t|||	|
fƒ}|sÄt d	¡ t d
|¡ t d|¡ t d|	¡ t d|
¡ ||fS )aœ  Create a request token response, with a new request token if valid.

        :param uri: The full URI of the token request.
        :param http_method: A valid HTTP verb, i.e. GET, POST, PUT, HEAD, etc.
        :param body: The request body as a string.
        :param headers: The request headers as a dict.
        :param realms: A list of realms the resource is protected under.
                       This will be supplied to the ``validate_realms``
                       method of the request validator.
        :returns: A tuple of 2 elements.
                  1. True if valid, False otherwise.
                  2. An oauthlib.common.Request object.
        )FNF)Úaccess_token)ÚuriÚrealmsÚclientÚresource_ownerÚrealmÚ	signaturez&[Failure] request verification failed.zValid client: %szValid token: %szValid realm: %szValid signature: %s)Ú_create_requestr   ÚOAuth1ErrorÚ_check_transport_securityÚ_check_mandatory_parametersÚresource_owner_keyÚrequest_validatorÚcheck_access_tokenÚvalidate_timestamp_and_nonceÚ
client_keyÚ	timestampÚnonceÚvalidate_client_keyÚdummy_clientÚvalidate_access_tokenÚdummy_access_tokenÚvalidate_realmsr	   Ú_check_signatureÚvalidator_logÚallÚlogÚinfo)Úselfr	   Úhttp_methodÚbodyÚheadersr
   ÚrequestÚvalid_clientÚvalid_resource_ownerÚvalid_realmÚvalid_signatureÚv© r.   úy/home/esfera/Documents/content_generation/venv/lib/python3.10/site-packages/oauthlib/oauth1/rfc5849/endpoints/resource.pyÚ#validate_protected_resource_request5   sf   ÿ
ÿÿþ	ÿ
	
ÿ


þ




ÿ
z4ResourceEndpoint.validate_protected_resource_request)r   NNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r0   r.   r.   r.   r/   r      s
    "ÿr   )
r4   ÚloggingÚ r   Úbaser   Ú	getLoggerr1   r"   r   r.   r.   r.   r/   Ú<module>   s   
