3
sdn  ã               @   sR  d dl Z d dlZd dlZddlT yejjZW n ek
rF   ejZY nX ejdƒZ	dd„ Z
dej ej ZejeƒjdƒZejejd	ej ej ƒejejd
ƒjƒ ƒ ƒjdƒZejjƒ jdƒje
ƒZejƒ jdƒjeƒZeejd
ƒ eeB  ZejejejeƒƒƒZ edƒZ!e!e dƒedƒB  Z"e jƒ Z#ejeje"ƒƒZ$ddd„Z%ddd„Z&dS )é    Né   )Ú*z\\(.)c             C   s   t jd|d dd… ƒS )Nz\1r   r   éÿÿÿÿ)ÚUNQUOTE_PAIRSÚsub)ÚsÚlÚt© r
   ú1/tmp/pip-build-7vycvbft/httplib2/httplib2/auth.pyÚ<lambda>   s    r   z!#$%&'*+-.^_`|~Útokenz-._~+/ú=Útoken68zquoted-stringzauth-param-nameÚschemeÚparamsúauthentication-infoc             C   s\   | j |dƒjƒ }|si S ytj|ƒ}W n, tjk
rR } zt|ƒ‚W Y dd}~X nX |jƒ S )z(https://tools.ietf.org/html/rfc7615
    Ú N)ÚgetÚstripÚauthentication_infoÚparseStringÚppÚParseExceptionÚMalformedHeaderÚasDict)ÚheadersÚ
headernameÚheaderÚparsedÚexr
   r
   r   Ú_parse_authentication_info%   s    r!   úwww-authenticatec             C   sf   | j |dƒjƒ }|si S ytj|ƒ}W n, tjk
rR } zt|ƒ‚W Y dd}~X nX dd„ |D ƒ}|S )z?Returns a dictionary of dictionaries, one dict per auth_scheme.r   Nc             S   s8   i | ]0}d |kr|d  j ƒ nd|jdƒi|d jƒ “qS )r   r   r   )r   r   Úlower)Ú.0Ú	challenger
   r
   r   ú
<dictcomp>?   s   z+_parse_www_authenticate.<locals>.<dictcomp>)r   r   Úwww_authenticater   r   r   r   )r   r   r   r   r    Úretvalr
   r
   r   Ú_parse_www_authenticate4   s    r)   )r   )r"   )'Úbase64ÚreÚ	pyparsingr   ÚerrorÚcommonÚdowncaseTokensÚAttributeErrorÚcompiler   ÚunquoteÚnumsÚalphasZtcharÚWordÚsetNamer   ÚCombineÚOptionalÚleaveWhitespacer   ÚdblQuotedStringÚcopyÚsetParseActionZquoted_stringÚaddParseActionZauth_param_nameÚSuppressZ
auth_paramÚDictÚdelimitedListÚGroupr   r   r%   r   r'   r!   r)   r
   r
   r
   r   Ú<module>   s.   
0
