3 P\P@sRdZddlmZddlmZddlmZmZGdddejZ Gdd d e Z d S) z-The module containing the code for GuessAuth.)auth)cookies)_digest_auth_compathttp_proxy_digestc@s8eZdZdZddZddZddZdd Zd d Zd S) GuessAuthz7Guesses the auth type by the WWW-Authentication header.cCs||_||_d|_d|_dS)N)usernamepasswordrpos)selfrr r /usr/lib/python3.6/guess.py__init__ szGuessAuth.__init__cCs|jdk r|jjj|j|j|jj|jj}t|dsHt j |_ t j |j |j|j|j |j tj|j|j|_|j|}|jj|f|}|jj|||_|S)N_cookies)r requestbodyseekcontentraw release_conncopyhasattrrRequestsCookieJarrextract_cookies_to_jarprepare_cookiesrZ HTTPBasicAuthrr connectionsendhistoryappend)r rkwargsprep_rr r r _handle_basic_auth_401s        z GuessAuth._handle_basic_auth_401c Csftj|j|j|_y|jjWntk r4YnXt|jdrV|jjdkrVd|j_|jj |f|S)N num_401_callsr) auth_compatZHTTPDigestAuthrr rinit_per_thread_stateAttributeErrorrr$ handle_401)r rr r r r _handle_digest_auth_401's  z!GuessAuth._handle_digest_auth_401cKs>|jjddj}d|kr&|j||Sd|kr:|j||SdS)z/Resends a request with auth headers, if needed.zwww-authenticatebasicdigestN)headersgetlowerr#r))r rr Zwww_authenticater r r r(:s  zGuessAuth.handle_401c CsL|jdk r|j|Sy|jj|_Wntk r8YnX|jd|j|S)Nresponse)rrtellr r' register_hookr()r rr r r __call__Es  zGuessAuth.__call__N) __name__ __module__ __qualname____doc__rr#r)r(r3r r r r r s  rcsFeZdZdZd fdd ZddZddZd d Zfd d ZZ S)GuessProxyAuthzZ Guesses the auth type by WWW-Authentication and Proxy-Authentication headers Ncs(tt|j||||_||_d|_dS)N)superr8rproxy_usernameproxy_password proxy_auth)r rr r:r;) __class__r r rWszGuessProxyAuth.__init__cCs|jdk r|jjj|j|j|jj|jj}t|dsHt j |_ t j |j |j|j|j |j tj|j|j|_|j|}|jj|f|}|jj|||_|S)Nr)r rrrrrrrrrrrrrrZ HTTPProxyAuthr:r;r<rrrr)r rr r!r"r r r _handle_basic_auth_407^s          z%GuessProxyAuth._handle_basic_auth_407c CsHtj|j|jd|_y|jjWntk r6YnX|jj|f|S)N)rr ) rZHTTPProxyDigestAuthr:r;r<rr&r' handle_407)r rr r r r _handle_digest_auth_407ss z&GuessProxyAuth._handle_digest_auth_407cKs>|jjddj}d|kr&|j||Sd|kr:|j||SdS)NzProxy-Authenticater*r+r,)r-r.r/r>r@)r rr Zproxy_authenticater r r r?s  zGuessProxyAuth.handle_407c sX|jdk r|j|}y|jj|_Wntk r8YnX|jd|jtt|j |S)Nr0) r<rr1r r'r2r?r9r8r3)r r)r=r r r3s  zGuessProxyAuth.__call__)NNNN) r4r5r6r7rr>r@r?r3 __classcell__r r )r=r r8Rs  r8N) r7Zrequestsrrr*rr%rZAuthBaserr8r r r r s   I