Viewing File: /opt/alt/python35/lib64/python3.5/site-packages/aiohttp/__pycache__/client.cpython-35.opt-1.pyc



Z@&@s-dZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZm
Z
mZmZddlmZddlmZmZddlmZdd	lmZmZmZdd
lTddlmZmZmZmZmZdd
lTddlmZm Z m!Z!dd
l"m#Z#dd
lTddlm$Z$ddl%m&Z&ddl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-ddlm.Z.m/Z/m0Z0ddl1m2Z2m3Z3m4Z4ddl5m6Z6ddl7m8Z8m9Z9ddl:m;Z;ej<ej<ej<dddfZ<ddZ=GdddZ>Gddde
Z?Gddde?Z@Gd d!d!e?ZAGd"d#d#ZBd$dd%dd&dd'dd(dd)dd*dd+d,d-d.d/ejCd0dd1dd2d3d4dd5dd6d,d7dd8dd9dZDdS):zHTTP Client for asyncio.N)	Coroutine)CIMultiDict	MultiDictMultiDictProxyistr)URL)client_exceptions
client_reqrep)	connector)hdrshttppayload)*)ClientError
ClientOSError
InvalidURLServerTimeoutErrorWSServerHandshakeError)
ClientRequestClientResponse_merge_ssl_params)ClientWebSocketResponse)TCPConnector)	CookieJar)PY_36CeilTimeout
TimeoutHandleproxies_from_envsentinelstrip_auth_from_url)WS_KEYWebSocketReaderWebSocketWriter)WSHandshakeError
ws_ext_genws_ext_parse)FlowControlDataQueue)tcp_corktcp_nodelay)Trace
ClientSessionrrequest<c,seZdZdZedddddddd	d
ddd
ddddddddgZdZdZdZddddddddddddde	j
ded ed!e
d"ejd#dd$dd%d&d'ed(dd)dd*d&d+dd,d-Zd.d/Zfd0d1Zed2d3Zd4d5Zd6dd7dd8dddddddd9dd:d;d<dd=dd>d&d?dd@ddAddBedCddDddEddFddGddHddIdJZdKfdBdLdMddNddOddPddddQdddd@ddAddFddCddDddEddGdd<dRdSdTZdKfdBdLdMddNddOddPddddQdddd@ddAddFddCddDddEddGdd<dRdUdVZdWdXZd9ddYdZZd9dd[d\Zd9d&d]d^Zd7dd_d`Zd7ddadbZd7ddcddZ dedfZ!dgdhZ"e#didjZ$e#dkdlZ%e#dmdnZ&e#dodpZ'e#dqdrZ(dsdtZ)dudvZ*dwdxZ+dydzZ,d{d|Z-S)}r+z/First-class interface for making HTTP requests._source_traceback
_connectorrequote_redirect_url_loop_cookie_jar_connector_owner
_default_auth_version_json_serialize
_read_timeout
_conn_timeout_raise_for_status_auto_decompress
_trust_env_default_headers_skip_auto_headers_request_class_response_class_ws_response_class_trace_configsNTrloopcookiesheadersskip_auto_headersauthjson_serialize
request_classresponse_classws_response_classversion
cookie_jarconnector_ownerraise_for_statusFread_timeoutconn_timeoutauto_decompress	trust_env
trace_configscCsYd}|dkr<|dk	r*|j}nd}tj}|dkrWtd|}|j|k	rrtd||_|jrtjtj	d|_
|r|jrtj
dddd	|d
di}|j
dk	r|j
|d<|j||dkrtd|}||_|dk	rC|jj|||_|
|_||_||_||_|tk	r|nt|_||_||_||_||_|rt|}n	t}||_|dk	rt d
d|D|_!nt |_!||_"|	|_#|
|_$|p1g|_%x|j%D]}|j&qAWdS)NFTrCz0Session and connector has to use same event looprzGCreating a client session outside of coroutine is a very dangerous idea
stacklevelclient_sessionmessagez.Creating a client session outside of coroutinesource_tracebackcSsg|]}t|qS)r).0irZrZ
/client.py
<listcomp>s	z*ClientSession.__init__.<locals>.<listcomp>)'r2asyncioZget_event_looprRuntimeErrorZ	get_debug	traceback
extract_stacksys	_getframer/Z
is_runningwarningswarncall_exception_handlerrr3update_cookiesr0r4r5r6r7rDEFAULT_TIMEOUTr8r9r:r;r<rr=	frozensetr>r?r@rArBZfreeze)selfrrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTZ
implicit_loopcontexttrace_configrZrZr]__init__Ash		

																zClientSession.__init__cCs&tjdj|jtdddS)Nz6Inheritance class {} from ClientSession is discouragedrUrV)rerfformat__name__DeprecationWarning)clsrZrZr]__init_subclass__s	zClientSession.__init_subclass__csE||jkr.tjdj|tddtj||dS)Nz8Setting custom ClientSession.{} attribute is discouragedrUrV)ATTRSrerfrorqsuper__setattr__)rknameval)	__class__rZr]rvszClientSession.__setattr__cCs|js~trd|i}ni}|jdj|t|d|ddi}|jdk	rn|j|d<|jj|dS)NsourcezUnclosed client session {!r}rWrXzUnclosed client sessionrY)closedrrfroResourceWarningr/r2rg)rk	_warningskwargsrlrZrZr]__del__s	
zClientSession.__del__cKst|j|||S)zPerform HTTP request.)_RequestContextManager_request)rkmethodurlr~rZrZr]r,szClientSession.requestparamsdatajsonallow_redirects
max_redirects
compresschunked	expect100read_until_eofproxy
proxy_authtimeout
verify_sslfingerprintssl_contextssl
proxy_headerstrace_request_ctxc,Fsjrtdt||||}|dk	rQ|dk	rQtdn$|dk	rutj|dj}t|tr|dk	rt	j
dtd}g}j}j
|}j
|}yt|}Wntk
rt|YnXtj}|dk	rDx!|D]}|jt|q'W|dk	ryt|}Wntk
rt|YnXtj|tk	r|nj}|j}fddjD}x&|D]} | j|||IdHqW|j}!y|!xt|\}}"|r?|"r?td|dkrQ|"}|dkrfj}|dk	r|dk	rtj|krtd	|j d}j!j"|}#|dk	rt|}nKj#r x?t$j%D].\}$}%|$|j&kr|%j'}|%j(}PqWj)||d
|d|d|d
|d|#d|d|d|d|d|
djdj*d|d|d|!ddj+d|d|}&yAt,j-dj"j.j/|&d|IdH}'WdQRXWn@t0j1k
r0}(zt2dj3||(WYdd}(~(XnXt4|'j5dt6|'j5d yX|&j7|'})y|)j|'|IdHWn)t8k
r|)j9|'j9YnXWnKt:k
rYn7t;k
r}(zt<|(j=|(WYdd}(~(XnXj!j>|)j?|)j@|)jAd,kr|	rx)|D]!} | jB||||)IdHq,W|d&7}|jC|)|
r||
kr|)j9Pn
|)jD|)jAd#kr|)jEtjFks|)jAd-kr|)jEtjGkrtjH}d}|jItjJr|jKtjJ|)jLjItjMp,|)jLjItjN}*|*dkr<Pyt|*d'jO}*Wntk
rvt|*YnX|*j&}$|$d.kr|)j9td+n|$s|jP|*}*|jQ|*jQkrd}|jKtjd|*}d}|)jDqPqWWdQRXjRr#|)jS|dk	r^|)jTdk	rT|)jTjU|jVn
|jVtW||)_Xx)|D]!} | jY||||)IdHqtW|)SWntt8k
r}+zT|j9|r|jVd}x)|D]!} | jZ||||+IdHqWWYdd}+~+XnXdS)/NzSession is closedz9data and json parameters can not be used at the same timedumpszChunk size is deprecated #1615rcs.g|]$}t||jdqS)r)r*Ztrace_config_ctx)r[rm)rkrrZr]r^s	z*ClientSession._request.<locals>.<listcomp>z<Cannot combine AUTH argument with credentials encoded in URLzTCannot combine AUTHORIZATION header with AUTH argument or credentials encoded in URLrrErFrrDrGrLrrrrCrJrrtimersessionrRrrtraceszConnection timeout to host {0}TF-./34rencodedr
httpsz"Can redirect only to http or https)rrrrr)rr)r
rr)[r{r`r
ValueErrorrZJsonPayloadr7
isinstanceboolrerfrqr6_prepare_headersrrsetr>addrrr2rr8startrBZsend_request_startrr r5rZ
AUTHORIZATIONZ
with_fragmentr3Zfilter_cookiesr<ritemsschemerrr?r@r;rr9r0connectr_TimeoutErrorrror)	transportr(send
BaseExceptioncloserOSErrorrargsrhrDrstatusZsend_request_redirectappendreleaser	METH_HEAD	METH_POSTMETH_GETgetZCONTENT_LENGTHpoprEZLOCATIONZURIr1joinoriginr:rO
connectionZadd_callbackcanceltupleZ_historyZsend_request_endZsend_request_exception),rkrrrrrrErFrGrrrrrrrrrrrrrrrZ	redirectshistoryrLZskip_headersr\ZtmhandlerZtracerZ
auth_from_urlrDrZ
proxy_infoZreqconnexcrespZr_urlerZ)rkrr]rsV	
	




						"



%




	
	

	





zClientSession._request	protocolsg$@receive_timeout	autocloseautoping	heartbeatrrc%Csyt|j|d|d|d|d|d|d|d|d|	d	|
d
|d|d|
d
|d|d|d|d|S)zInitiate websocket connection.rrrrrrrGrrErrrrrrrr)_WSRequestContextManager_ws_connect)rkrrrrrrrrGrrErrrrrrrrrZrZr]
ws_connects&zClientSession.ws_connectc#%s|
dkrt}
tjtjtjtjtjdi}x0|jD]"\}}||
krI||
|<qIWtjt	j
d}|j|
tj<|rdj
||
tj<|	dk	r|	|
tj<|rtd|}||
tj<t|
|||}
|j|d|
ddd|d	|d
|d|
d|IdH}y|jd
krt|j|jddd|jd|j|jjtjdjdkrt|j|jddd|jd|j|jjtjdjdkr%t|j|jddd|jd|j|jjtjd}tjtj|tjj}||krt|j|jddd|jd|jd}|rtj|jkrdd|jtjjdD}x!|D]}||kr|}PqWd}|r|jjtj}|ryt |\}}Wqt!k
r}z9t|j|jd|j"dd|jd|jWYdd}~XqXnd}d}|j#j$}|j#j%} t&|dd#d|j'}!|j(t)|!|!t*| dt+|| ddd|d|}"Wnt,k
rG|j-Yn>X|j.|!|"||||||j'd |d!|d|d"|SdS)$NZ13,rrErFrGrrrrerXzInvalid response statuscoderZ	websocketzInvalid upgrade headerZupgradezInvalid connection headerzInvalid challenge responsecSsg|]}|jqSrZ)strip)r[protorZrZr]r^Cs	z-ClientSession._ws_connect.<locals>.<listcomp>rlimitrVrCTZuse_mask
notakeoverrrZclient_notakeoveri)/rrZUPGRADEZ	WEBSOCKETZ
CONNECTIONZSEC_WEBSOCKET_VERSIONrbase64Z	b64encodeosurandomdecodeZSEC_WEBSOCKET_KEYrZSEC_WEBSOCKET_PROTOCOLZORIGINr%ZSEC_WEBSOCKET_EXTENSIONSrrrrZrequest_inforrElowerZSEC_WEBSOCKET_ACCEPThashlibsha1r!digestsplitr&r$rrprotocolrr'r2Z
set_parserr"r)r#rrrA)#rkrrrrrrrrGrrErrrrrrrrZdefault_headerskeyvalueZsec_keyZextstrrmatchrZresp_protocolsrrZ
compress_hdrsrrreaderwriterrZrZr]rs	

		$		$		"			
	
	"


		zClientSession._ws_connectcCst|j}|rt|ttfs6t|}t}xP|jD]B\}}||krw|j||qL|||<|j|qLW|S)z= Add default headers and transform it to CIMultiDict
        )rr=rrrrrr)rkrEresultZadded_namesrrrZrZr]rws	
zClientSession._prepare_headerscKs"t|jtj|d||S)zPerform HTTP GET request.r)rrrr)rkrrr~rZrZr]rszClientSession.getcKs"t|jtj|d||S)zPerform HTTP OPTIONS request.r)rrrZMETH_OPTIONS)rkrrr~rZrZr]optionsszClientSession.optionscKs"t|jtj|d||S)zPerform HTTP HEAD request.r)rrrr)rkrrr~rZrZr]headszClientSession.headcKs"t|jtj|d||S)zPerform HTTP POST request.r)rrrr)rkrrr~rZrZr]postszClientSession.postcKs"t|jtj|d||S)zPerform HTTP PUT request.r)rrrZMETH_PUT)rkrrr~rZrZr]putszClientSession.putcKs"t|jtj|d||S)zPerform HTTP PATCH request.r)rrrZ
METH_PATCH)rkrrr~rZrZr]patchszClientSession.patchcKst|jtj||S)zPerform HTTP DELETE request.)rrrZMETH_DELETE)rkrr~rZrZr]deleteszClientSession.deletecs,|js(|jr|jjd|_dS)zMClose underlying connector.

        Release all acquired resources.
        N)r{r4r0r)rkrZrZr]rs		
zClientSession.closecCs|jdkp|jjS)z@Is client session closed.

        A readonly property.
        N)r0r{)rkrZrZr]r{szClientSession.closedcCs|jS)z(Connector instance used for the session.)r0)rkrZrZr]rszClientSession.connectorcCs|jS)zThe session cookies.)r3)rkrZrZr]rMszClientSession.cookie_jarcCs|jS)z"The session HTTP protocol version.)r6)rkrZrZr]rLszClientSession.versioncCs|jS)zSession's loop.)r2)rkrZrZr]rCszClientSession.loopcCs
d|_dS)zwDetach connector from session without closing the former.

        Session is switched to closed state anyway.
        N)r0)rkrZrZr]detachszClientSession.detachcCstddS)NzUse async with instead)	TypeError)rkrZrZr]	__enter__szClientSession.__enter__cCsdS)NrZ)rkexc_typeexc_valexc_tbrZrZr]__exit__szClientSession.__exit__cs|S)NrZ)rkrZrZr]
__aenter__szClientSession.__aenter__cs|jIdHdS)N)r)rkrrrrZrZr]	__aexit__szClientSession.__aexit__).rp
__module____qualname____doc__rjrtr/r0r1rrrrrr

HttpVersion11rrnrsrvrerr,rrrrrrrrrrrrpropertyr{rrMrLrCrrrrrrZrZ)ryr]r+/s					H
c@sjeZdZdZddZddZddZd	d
ZddZd
dZ	ddZ
dS)_BaseRequestContextManager_coro_respcCs
||_dS)N)r)rkcororZrZr]rnsz#_BaseRequestContextManager.__init__cCs|jj|S)N)rr)rkargrZrZr]rsz_BaseRequestContextManager.sendcCs|jj|S)N)rthrow)rkrrZrZr]rsz _BaseRequestContextManager.throwcCs
|jjS)N)rr)rkrZrZr]rsz _BaseRequestContextManager.closecCs|jj}|S)N)r	__await__)rkZretrZrZr]rsz$_BaseRequestContextManager.__await__cCs
|jS)N)r)rkrZrZr]__iter__sz#_BaseRequestContextManager.__iter__cs|jIdH|_|jS)N)rr)rkrZrZr]r
sz%_BaseRequestContextManager.__aenter__N)rr)rprr	__slots__rnrrrrrrrZrZrZr]rsrc@seZdZddZdS)rcs|jjdS)N)rr)rkrrtbrZrZr]rsz _RequestContextManager.__aexit__N)rprrrrZrZrZr]rsrc@seZdZddZdS)rcs|jjIdHdS)N)rr)rkrrrrZrZr]rsz"_WSRequestContextManager.__aexit__N)rprrrrZrZrZr]rsrc@s:eZdZdZddZddZdd	Zd
S)_SessionRequestContextManagerrr_sessioncCs||_d|_||_dS)N)rrr)rkrrrZrZr]rn"s		z&_SessionRequestContextManager.__init__cs|jIdH|_|jS)N)rr)rkrZrZr]r'sz(_SessionRequestContextManager.__aenter__cs#|jj|jjIdHdS)N)rrr)rkrrrrZrZr]r+s
z'_SessionRequestContextManager.__aexit__N)rrr)rprrrrnrrrZrZrZr]rsrrrrrErFrDrGrTrrrLrrrFrrCrrrc Csd}|dkr-d}td|dd}td|d|d|d|d	|}t|j||d
|d|d|d
|d|d|d|	d|
d|d|
d|d|d|d||S)aRConstructs and sends a request. Returns response object.
    method - HTTP method
    url - request url
    params - (optional) Dictionary or bytes to be sent in the query
      string of the new request
    data - (optional) Dictionary, bytes, or file-like object to
      send in the body of the request
    json - (optional) Any json compatibile python object
    headers - (optional) Dictionary of HTTP Headers to send with
      the request
    cookies - (optional) Dict object to send with the request
    auth - (optional) BasicAuth named tuple represent HTTP Basic Auth
    auth - aiohttp.helpers.BasicAuth
    allow_redirects - (optional) If set to False, do not follow
      redirects
    version - Request HTTP version.
    compress - Set to True if request has to be compressed
       with deflate encoding.
    chunked - Set to chunk size for chunked transfer encoding.
    expect100 - Expect 100-continue response from server.
    connector - BaseConnector sub-class instance to support
       connection pooling.
    read_until_eof - Read response until eof if response
       does not have Content-Length header.
    loop - Optional event loop.
    Usage::
      >>> import aiohttp
      >>> resp = await aiohttp.request('GET', 'http://python.org/')
      >>> resp
      <ClientResponse(python.org/) [200]>
      >>> data = await resp.read()
    FNTrCZforce_closerDrLrrNrrrrErFrGrrrrrrrr)rr+rr)rrrrrrErFrDrGrrrLrrrrrCrrrrNrrZrZr]r,0s03)Err_rrrrrcrarecollections.abcrZ	multidictrrrrZyarlrrr	r
rZ
connector_modrr
rrrrrrrrrZ	client_wsrrZ	cookiejarrZhelpersrrrrrr r!r"r#Zhttp_websocketr$r%r&Zstreamsr'Ztcp_helpersr(r)Ztracingr*__all__rir+rrrrrr,rZrZrZr]<module>sr"
(

.

	
Back to Directory File Manager