ó
O'^c           @@ sq   d  Z  d d l m Z m Z d d l Z d d l m Z d d l m Z e j	 e
  Z d e f d	     YZ d S(
   uą   
oauthlib.oauth1.rfc5849.endpoints.signature_only
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This module is an implementation of the signing logic of OAuth 1.0 RFC 5849.
i    (   t   absolute_importt   unicode_literalsNi   (   t   BaseEndpointi   (   t   errorst   SignatureOnlyEndpointc           B@ s    e  Z d  Z d d d d  Z RS(   u>   An endpoint only responsible for verifying an oauth signature.u   GETc   	      C@ sO  y |  j  | | | |  } Wn t j k
 r9 t d f SXy |  j |  |  j |  Wn t j k
 ru t | f SX|  j j | j	 | j
 | j |  sĪ t | f S|  j j | j	 |  } | sÔ |  j j | _	 n  |  j |  } | | j d <| | j d <t | | f  } | sEt j d  t j d |  t j d |  n  | | f S(   u°  Validate a signed OAuth request.

        :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.
        :returns: A tuple of 2 elements.
                  1. True if valid, False otherwise.
                  2. An oauthlib.common.Request object.
        u   clientu	   signatureu&   [Failure] request verification failed.u   Valid client: %su   Valid signature: %sN(   t   _create_requestR   t   OAuth1Errort   Falset   Nonet   _check_transport_securityt   _check_mandatory_parameterst   request_validatort   validate_timestamp_and_noncet
   client_keyt	   timestampt   noncet   validate_client_keyt   dummy_clientt   _check_signaturet   validator_logt   allt   logt   info(	   t   selft   urit   http_methodt   bodyt   headerst   requestt   valid_clientt   valid_signaturet   v(    (    sR   /tmp/pip-unpacked-wheel-eAx2J6/oauthlib/oauth1/rfc5849/endpoints/signature_only.pyt   validate_request   s2    	
		N(   t   __name__t
   __module__t   __doc__R   R    (    (    (    sR   /tmp/pip-unpacked-wheel-eAx2J6/oauthlib/oauth1/rfc5849/endpoints/signature_only.pyR      s   (   R#   t
   __future__R    R   t   loggingt   baseR   t    R   t	   getLoggerR!   R   R   (    (    (    sR   /tmp/pip-unpacked-wheel-eAx2J6/oauthlib/oauth1/rfc5849/endpoints/signature_only.pyt   <module>   s   