
?`U
                 @   s   d  Z  d d l m Z m Z y d d l Z Wn! e k
 rO d d l j Z Yn Xd d l m	 Z	 m
 Z
 m Z m Z d Z d d   Z d d	   Z d
 d   Z d d   Z d d   Z d d   Z d d   Z d S)zn
oauthlib.utils
~~~~~~~~~~~~~~

This module contains utility methods used by various parts of the OAuth
spec.
    )absolute_importunicode_literalsN)quoteunquote
bytes_typeunicode_typeZ>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789c                s"     f d d   }   j  | _  | S)zDecorator which filters params to remove non-oauth_* parameters

    Assumes the decorated method takes a params dict or list of tuples as its
    first argument.
    c                s   t  |   }    |  | |  S)N)filter_oauth_params)paramsargskwargs)target ?/usr/lib/python3/dist-packages/oauthlib/oauth1/rfc5849/utils.pywrapper   s    zfilter_params.<locals>.wrapper)__doc__)r   r   r   )r   r   filter_params   s    r   c             C   sQ   d d   } t  |  t  r: t t | t |  j      St t | |    Sd S)zARemoves all non oauth parameters from a dict or a list of params.c             S   s   |  d j  d  S)Nr   Zoauth_)
startswith)Zkvr   r   r   <lambda>'   s    z%filter_oauth_params.<locals>.<lambda>N)
isinstancedictlistfilteritems)r	   Zis_oauthr   r   r   r   %   s    r   c             C   s?   t  |  t  s/ t d d |  t |   f   t |  d d S)zEscape a unicode string in an OAuth-compatible fashion.

    Per `section 3.6`_ of the spec.

    .. _`section 3.6`: http://tools.ietf.org/html/rfc5849#section-3.6

    z$Only unicode objects are escapable. zGot %s of type %s.Zsafe   ~)r   r   
ValueErrortyper   )ur   r   r   escape.   s    r   c             C   s%   t  |  t  s t d   t |   S)Nz%Only unicode objects are unescapable.)r   r   r   r   )r   r   r   r   unescape>   s    r   c             C   s   t  j |   S)z1A unicode-safe version of urllib2.parse_keqv_list)urllib2parse_keqv_list)lr   r   r   r    D   s    r    c             C   s   t  j |   S)z1A unicode-safe version of urllib2.parse_http_list)r   parse_http_list)r   r   r   r   r"   J   s    r"   c             C   s   d j    } |  d t |   j    j |  r t |  t |  d   } y t t |  j    SWn t t f k
 r Yn Xt d   d S)z;Parse an OAuth authorization header into a list of 2-tupleszOAuth NzMalformed authorization header)	lowerlenr   r"   r   r    r   
IndexErrorr   )Zauthorization_headerZauth_schemer   r   r   r   parse_authorization_headerP   s    %r&   )r   Z
__future__r   r   r   ImportErrorZurllib.requestZrequestZoauthlib.commonr   r   r   r   ZUNICODE_ASCII_CHARACTER_SETr   r   r   r   r    r"   r&   r   r   r   r   <module>   s   "	