
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
,î[Þ
  ã               @   s˜   d Z ddlmZmZ ddlmZmZmZmZ yddl	Z	W n e
k
rV   ddljZ	Y nX 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_literals)Ú
bytes_typeÚquoteÚunicode_typeÚunquoteNZ>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789c                s   ‡ fdd„}ˆ j |_ |S )z§Decorator 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 | ƒ} ˆ | f|ž|ŽS )N)Úfilter_oauth_params)ÚparamsÚargsÚkwargs)Útarget© ú/usr/lib/python3.6/utils.pyÚwrapper   s    zfilter_params.<locals>.wrapper)Ú__doc__)r   r   r   )r   r   Úfilter_params   s    r   c             C   s:   dd„ }t | tƒr(tt|t| jƒ ƒƒƒS tt|| ƒƒS d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 )zªEscape a unicode string in an OAuth-compatible fashion.

    Per `section 3.6`_ of the spec.

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

    z$Only unicode objects are escapable. zGot %r 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    E   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"   K   s    r"   c             C   sl   dj ƒ }| dt|ƒ… j ƒ j|ƒr`t| t|ƒd… ƒ}ytt|ƒjƒ ƒS  ttfk
r^   Y nX t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_headerQ   s    r&   )r   Z
__future__r   r   Zoauthlib.commonr   r   r   r   r   ÚImportErrorZurllib.requestZrequestZUNICODE_ASCII_CHARACTER_SETr   r   r   r   r    r"   r&   r   r   r   r   Ú<module>   s   	