3 ,[a @sdZddlmZmZddlmZmZddlmZyddl m Z m Z Wn$e k rhddl m Z m Z YnXej ddd Zd d Zd d ZddZdS)z oauthlib.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_importunicode_literals)extract_params urlencode)utils)urlparse urlunparseNc Cs|pi}g}x:|D]2\}}tj|}tj|}dj||}|j|qWdj|} |rbd|| } d| } 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", zOAuth %sZ Authorization)rescapeformatappendjoinupdate) oauth_paramsZheadersZrealmZ%authorization_header_parameters_partsZoauth_parameter_namevalueZ escaped_nameZ escaped_valuepartZauthorization_header_parametersZauthorization_headerZ full_headersr /usr/lib/python3.6/parameters.pyprepare_headerss"    rcCs&t|}|j||jddd|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 cSs|djdS)NrZoauth_) startswith)irrrosz _append_params..)key)listextendsort)rZparamsZmergedrrr_append_params^s  rcCs 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)rZbodyrrrprepare_form_encoded_bodyss rcCs>t|\}}}}}}tt|t|p$g}t||||||fS)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 )rrrrr )rZuriZschZnetpathZparZqueryZfrarrrprepare_request_uri_querys r)NN)__doc__Z __future__rrZoauthlib.commonrrrrr ImportErrorZ urllib.parseZ filter_paramsrrrrrrrr s  E