ó
o€
\c           @   sU   d  Z  d d l Z d d l m Z m Z d d l m Z d e j f d „  ƒ  YZ	 d S(   s*   The module containing HTTPProxyDigestAuth.iÿÿÿÿN(   t   cookiest   utilsi   (   t   _digest_auth_compatt   HTTPProxyDigestAuthc           B   sk   e  Z d  Z e j d d e j ƒZ d „  Z e d „  ƒ Z	 e	 j
 d „  ƒ Z	 d „  Z d „  Z d „  Z RS(	   sO  HTTP digest authentication between proxy

    :param stale_rejects: The number of rejects indicate that:
        the client may wish to simply retry the request
        with a new encrypted response, without reprompting the user for a
        new username and password. i.e., retry build_digest_header
    :type stale_rejects: int
    s   digest t   flagsc         O   s0   t  t |  ƒ j | | Ž  d |  _ |  j ƒ  d  S(   Ni    (   t   superR   t   __init__t   stale_rejectst   init_per_thread_state(   t   selft   argst   kwargs(    (    s]   /data/av2000/b2b/venv/lib/python2.7/site-packages/requests_toolbelt/auth/http_proxy_digest.pyR      s    	c         C   s,   t  |  d d  ƒ } | d  k r% |  j S| j S(   Nt   _thread_local(   t   getattrt   Nonet   _stale_rejectsR   (   R	   t   thread_local(    (    s]   /data/av2000/b2b/venv/lib/python2.7/site-packages/requests_toolbelt/auth/http_proxy_digest.pyR      s    c         C   s7   t  |  d d  ƒ } | d  k r* | |  _ n	 | | _ d  S(   NR   (   R   R   R   R   (   R	   t   valueR   (    (    s]   /data/av2000/b2b/venv/lib/python2.7/site-packages/requests_toolbelt/auth/http_proxy_digest.pyR   "   s    c         C   s/   y t  t |  ƒ j ƒ  Wn t k
 r* n Xd  S(   N(   R   R   R   t   AttributeError(   R	   (    (    s]   /data/av2000/b2b/venv/lib/python2.7/site-packages/requests_toolbelt/auth/http_proxy_digest.pyR   *   s    c         K   s¤  | j  d k rœ|  j d k  rœ| j j d ƒ } | d k rK t d ƒ ‚ n |  j j | ƒ sa | St j	 |  j j
 d | d d ƒƒ |  _ d | j j k rÿ d	 |  j k rÿ |  j d	 j ƒ  d
 k rÔ |  j d 7_ qÿ |  j d	 j ƒ  d k rÿ t d ƒ ‚ qÿ n  | j | j ƒ  | j j ƒ  } t j | j | j | j ƒ | j | j ƒ |  j | j | j ƒ | j d <| j j | |  } | j j | ƒ | | _ | S| Sd S(   s’   Handle HTTP 407 only once, otherwise give up

        :param r: current response
        :returns: responses, along with the new response
        i—  i   s   proxy-authenticatesR   proxy server violated RFC 7235:407 response MUST contain header proxy-authenticatet    t   counti   s   Proxy-Authorizationt   stalet   truet   falses   User or password is invalidN(   t   status_codeR   t   headerst   getR   t   IOErrort   _patt   matchR   t   parse_dict_headert   subt   chalt   requestt   lowert   contentt   closet   copyR    t   extract_cookies_to_jart   _cookiest   rawt   prepare_cookiest   build_digest_headert   methodt   urlt
   connectiont   sendt   historyt   append(   R	   t   rR   t   s_autht   prept   _r(    (    s]   /data/av2000/b2b/venv/lib/python2.7/site-packages/requests_toolbelt/auth/http_proxy_digest.pyt
   handle_4071   s6    !
	c         C   sL   |  j  ƒ  |  j r5 |  j | j | j ƒ | j d <n  | j d |  j ƒ | S(   Ns   Proxy-Authorizationt   response(   R   t
   last_nonceR*   R+   R,   R   t   register_hookR5   (   R	   R1   (    (    s]   /data/av2000/b2b/venv/lib/python2.7/site-packages/requests_toolbelt/auth/http_proxy_digest.pyt   __call___   s    
	(   t   __name__t
   __module__t   __doc__t   ret   compilet
   IGNORECASER   R   t   propertyR   t   setterR   R5   R9   (    (    (    s]   /data/av2000/b2b/venv/lib/python2.7/site-packages/requests_toolbelt/auth/http_proxy_digest.pyR   
   s   			.(
   R<   R=   t   requestsR    R   R   R   t   autht   HTTPDigestAuthR   (    (    (    s]   /data/av2000/b2b/venv/lib/python2.7/site-packages/requests_toolbelt/auth/http_proxy_digest.pyt   <module>   s   