
                             d Z ddlmZmZ ddlmZmZ ddlmZ 	 ddl	m	Z	m
Z
 ej                  dd       Zd	 Zd
 Zd Zy# e$ r ddlm	Z	m
Z
 Y ,w xY w)zoauthlib.parameters ~~~~~~~~~~~~~~~~~~~

This module contains methods related to `section 3.5`_ of the OAuth 1.0a spec.

.. _`section 3.5`: https://tools.ietf.org/html/rfc5849#section-3.5
    )absolute_importunicode_literals)extract_params	urlencode   )utils)urlparse
urlunparseNc                 4   |xs i }g }| D ]R  \  }}t        j                  |      }t        j                  |      }dj                  ||      }|j                  |       T dj	                  |      }	|rd|z  |	z   }	d|	z  }
i }|j                  |       |
|d<   |S )a  **Prepare the Authorization header.**

    Per `section 3.5.1`_ of the spec.

    Protocol parameters can be transmitted using the HTTP "Authorization"
    header field as defined by `RFC2617`_ with the auth-scheme name set to
    "OAuth" (case insensitive).

    For example::

        Authorization: OAuth realm="Example",
            oauth_consumer_key="0685bd9184jfhq22",
            oauth_token="ad180jjd733klru7",
            oauth_signature_method="HMAC-SHA1",
            oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D",
            oauth_timestamp="137131200",
            oauth_nonce="4572616e48616d6d65724c61686176",
            oauth_version="1.0"


    .. _`section 3.5.1`: https://tools.ietf.org/html/rfc5849#section-3.5.1
    .. _`RFC2617`: https://tools.ietf.org/html/rfc2617
    z	{0}="{1}"z, zrealm="%s", zOAuth %sAuthorization)r   escapeformatappendjoinupdate)oauth_paramsheadersrealm%authorization_header_parameters_partsoauth_parameter_namevalueescaped_nameescaped_valuepartauthorization_header_parametersauthorization_headerfull_headerss               5lib/third_party/oauthlib/oauth1/rfc5849/parameters.pyprepare_headersr      s    2 Mr' +-'%1!E
 << 45LLL'M
 lM:D)006 &2& %)II+%-! '5'='F(G# $&EE ,g"6,	    c                 d    t        |      }|j                  |        |j                  d        |S )a>  Append OAuth params to an existing set of parameters.

    Both params and oauth_params is must be lists of 2-tuples.

    Per `section 3.5.2`_ and `3.5.3`_ of the spec.

    .. _`section 3.5.2`: https://tools.ietf.org/html/rfc5849#section-3.5.2
    .. _`3.5.3`: https://tools.ietf.org/html/rfc5849#section-3.5.3

    c                 *    | d   j                  d      S )Nr   oauth_)
startswith)is    r   <lambda>z _append_params.<locals>.<lambda>n   s    AaDOOH5r    )key)listextendsort)r   paramsmergeds      r   _append_paramsr-   ]   s/     <&--
 	++5+6	-r    c                     t        | |      S )zPrepare the Form-Encoded Body.

    Per `section 3.5.2`_ of the spec.

    .. _`section 3.5.2`: https://tools.ietf.org/html/rfc5849#section-3.5.2

    )r-   )r   bodys     r   prepare_form_encoded_bodyr0   r   s     
d	++r    c                     t        |      \  }}}}}}t        t        | t        |      xs g             }t	        ||||||f      S )zPrepare the Request URI Query.

    Per `section 3.5.3`_ of the spec.

    .. _`section 3.5.3`: https://tools.ietf.org/html/rfc5849#section-3.5.3

    )r	   r   r-   r   r
   )r   urischnetpathparqueryfras           r   prepare_request_uri_queryr9   ~   sM     %-SM!#sD#uc
N<1F1L"M
N%	S#tS%5	66r    )NN)__doc__
__future__r   r   oauthlib.commonr   r    r   r	   r
   ImportErrorurllib.parsefilter_paramsr   r-   r0   r9    r    r   <module>rB      sa    9 5 0+ C CL*	,7]  0//0s   ? AA