Current File : //usr/lib/python2.7/site-packages/requestbuilder/service.pyc
�
!�3Xc@@s
ddlmZddlZddlZddlZddlZddlZddlZddlZ	ddl
Z
ddlZddlZ
ddlZddljjZddlmZmZmZmZddlmZdefd��YZd�Zd�Zd	�ZdS(
i(tabsolute_importN(tClientErrortServerErrortServiceInitErrortTimeoutError(tRegionConfigurableMixintBaseServicecB@s�eZdZdZdZdZdZdZdZ	gZ
dddd�Zed��Z
d�Zed��Zd�Zdddddddd	�Zdddddddd
�Zd�Zd�Zd
�Zd�Zd�ZRS(tiicK@s||_||_d|_tj|jj�|_|dk	rN||j_	n||_
d|_i|_||_
d|_dS(N(targstconfigtNonetendpointtloggingt	getLoggert	__class__t__name__tlogtleveltmax_retriestregion_nametsession_argsttimeoutt_session(tselfR	tloglevelRRtkwargs((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pyt__init__0s							cK@s�|jd|jj�|jd|j�|jdt|j��|jd|j�d|jkr~|jd|jd�n||j|�}|j	�|S(NRRRRtregion(
t
setdefaultRRRtdictRRRR	t	configure(tclstotherRtnew((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pyt
from_other>s
cC@s)|j�|j�|jdkrb|jjd�}|dk	rSt|�|_qb|j|_n|jdkr�|jjd�}|dk	r�t	|�|_q�|j
|_n|jjdt
�|jjd�}|dkr�|jjd�}n|jjd|jj|dt��|j�dS(Nsmax-retriesRtstreams
verify-tlss
verify-ssltverifytdefault(tupdate_config_viewt _BaseService__configure_endpointRR
R	tget_global_optiontinttMAX_RETRIESRtfloattTIMEOUTRRtTruetget_region_optiontconvert_to_booltFalsetvalidate_config(Rtconfig_max_retriestconfig_timeoutt
verify_ssl((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pyRJs&

	cC@s�|jdkr}tj�|_x3tj|j�D]\}}t|j||�q1Wx&|jjj	�D]}d|_
qgWn|jS(Ni(RR
trequeststsessiontsixt	iteritemsRtsetattrtadapterstvaluesR(Rtkeytvaltadapter((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pyR6lscC@s�|jdkr�|jdk	r�dj|j�}|jj|�}t|�dkr{dj|jdjt|���}q�dj|j|�}nd}t	|��ndS(Ns{0}-urlisWNo {0} endpoint to connect to was given. Configured regions with {0} endpoints are: {1}s, sdNo {0} endpoint to connect to was given. {0} endpoints may be specified in a config file with "{1}".s#No endpoint to connect to was given(
RR
tNAMEtformatR	tget_all_region_optionstlentjointsortedR(Rturl_opttavailable_regionstmsg((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pyR1wstGETc	C@s�|j|�}t|pi�}dg|D]}	|	j�^q+krbtj|j�j|d<n|j|||||||�}
|
jS(NthosttHost(t_BaseService__get_url_for_pathRtlowerturlparseRtnetloct%_BaseService__log_and_prepare_requestturl(RtmethodtpathtparamstheaderstdatatfilestauthRPtheadert	p_request((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pytget_request_url�s%c
C@sq|j|�}t|�}dg|D]}	|	j�^q%kr\tj|j�j|d<ny<|jd}
|
dks~t�d}t|t	�r�t
|d�r�|j�}nd}x�t
r�x�tt|
�d�D]�\}
}|dkr|jjd|�tj|�n|jjd|
|
�|j|||||||�}tjj|�}x6t|j��D]"\}}|jjd	||�qmWtjj�|_y+|jj|d
|j d|dt!�}Wn�tj"j#k
rU|
|
krO|jjd
d
t
�|dk	r7|jjd�|j$|�q�qOt
|d�sOq�qOn�nX|j%dkr�Pq�q�W|j%dkrs|dkrsd|j&krs|d8}tj|j&d�}tj|�}g}x0t'||�D]\}}|j(|p�|�q�Wd|kr|d|d<ntj)|�}|jjd||�|dk	r�|jjd�|j$|�q�q�n|j%dkr�|j*|�n|SWWn�tj"j#k
r�}|jjd
d
t
�t+d|��n�tj"j,k
r}|jjdd
t
�|j-|�Stj"j.k
r2}|j*|�Stj"j/k
rl}|jjdd
t
�t0|��nXdS(NRIRJiitseekiswill retry after %.3f secondss"sending request (attempt %i of %i)srequest  proxy:  %s=%sRtproxiestallow_redirectstexc_infos$re-seeking body to beginning of filettelli�i�i-i.i3i4tLocations,redirecting to %s (%i redirect(s) remaining)i,srequest timed outsconnection errors
request error(i�i�(i-i.i3i4(1RKRRLRMRRNRtAssertionErrort
isinstancetfilethasattrR_R
R-t	enumeratet_generate_delaysRtdebugttimetsleeptinfoROR5tutilstget_environ_proxiesRDtitemstdatetimetnowt
start_timeR6tsendRR0t
exceptionstTimeoutR[tstatus_codeRTtziptappendt
urlunparsethandle_http_errorRtConnectionErrort%_BaseService__handle_connection_errort	HTTPErrortRequestExceptionR(RRQRRRSRTRURVRWRPRXt	max_triestredirects_lefttdata_file_offsett
attempt_notdelayRYR\R<R=tresponset
parsed_rdrt
parsed_urltnew_url_bitstrdr_bitturl_bittexc((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pytsend_request�s�%
	
	

	

	

cC@s�t|tj�r|}n�t|t�r�t|j�dkr�t|jdd�rh|jdj}q�t|jdt�r�|j|jd�S|jd}nt	d��t	dj
|���dS(Nitreasonsconnection errorsconnection error ({0})(RbR7tstring_typest	ExceptionRBRRdR�RzRR@(RterrRG((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pyt__handle_connection_error�s	$cC@s&|jjddt�t|��dS(Ns
HTTP errorR^(RRgR-R(RR�((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pyRxscC@s@|r5|jjd�r#|j|S|jd|Sn|jSdS(Nt/(Rtendswith(RRR((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pyt__get_url_for_paths
cC@slitjt|j�d6}|r4|j|�}	nd}	tjd|d|d|d|d|d|d|	�}
|jj	|
�}i|dd6|_
|jjd	|
j�|jjd
|j
�t|jttjf�r=x]ttj|j��D]@\}}
|j�jd�r d}
n|jjd
||
�q�Wnt|
jttjf�r�xottjtj|j
�jdt��D]@\}}
|j�jd�r�d}
n|jjd||
�q�Wnt|
jttjf�r�tj|jj d�pd�\}}|dkr9tj!t"j#|j$�|�}n6|dkrfttj|j$dt��}n	|
j}xrt|j%��D][\}}
||
j&p�ikr�q�n|j�jd�r�d}
n|jjd||
�q�Wnt|
j&ttjf�rhxfttj|
j&��D]I\}}
t'|
d�rKdj(t)|
��}
n|jjd||
�qWn|S(NR�RQRPRSRURVRTRWsrequest  method: %ssrequest  url:    %stpasswords
<redacted>srequest  header: %s: %stkeep_blank_valuessrequest  param:  %s: %sscontent-typeRsmultipart/form-datas!application/x-www-form-urlencodedsrequest  data:   %s: %st__len__s<{0} bytes>srequest  file:   %s: %s(*t	functoolstpartialt_log_response_dataRtbind_to_serviceR
R5tRequestR6tprepare_requestthooksRgRQRPRbRTRtcollectionstMappingRDR7R8RLR�RSRMt	parse_qsltqueryR-RUtcgitparse_headertgettparse_multiparttiotBytesIOtbodyRmRVRdR@RB(RRQRPRSRURVRTRWR�t
bound_authtrequestRYR<R=tcontent_typetcontent_type_params((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pyt__log_and_prepare_requestsZ	%		!		%cC@s�|jjd�r.t|jd�\}}n�tj|j�rattj|j��\}}nt|jr�|jj|jd�\}}|r�|jj	d|�}|dkr�|jdd�d}q�q�d}n||_||_
dS(NRPs-urltnamet:ii����(RR�t_parse_endpoint_urltostgetenvt
URL_ENVVARR?R	tget_region_option2R.R
trsplitRR(RRPRtsection((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pyt__configure_endpointGs!			N(Rt
__module__R
R?tDESCRIPTIONtAPI_VERSIONR*R,t
REGION_ENVVARR�tARGSRtclassmethodR"RtpropertyR6R1RZR�RzRxRKROR'(((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pyR$s,	"		^				6cK@s�t|jd�rKtjj�|jj}|jd|j|jd�n|jdkrp|j	d|j�n|j
d|j�t|jt
tjf�r�x9t|jj��D]\}}|jd||�q�WndS(NRps response time:   %i.%03i secondsi�i�sresponse status: %isresponse header: %s: %s(RdR�RnRoRpRgtsecondstmicrosecondsRtterrorRjRbRTRR�R�RDRm(tloggerR�t_tdurationR<R=((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pyR�]s"cc@s_|dkr[dVxGtd|�D]3}tj�dd|d}t|df�Vq!WndS(Niiii(trangetrandomtmin(R}tretry_not
next_delay((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pyRfks
cC@s=d|kr'|jdd�\}}nd}|}||fS(s
    If given a URL, return the URL and None.  If given a URL with a string and
    "::" prepended to it, return the URL and the prepended string.  This is
    meant to give one a means to supply a region name via arguments and
    variables that normally only accept URLs.
    s::iN(tsplitR
(turlishRRP((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pyR�ss
(t
__future__RR�R�RnR�R�Rtos.pathR�R�Rhtrequests.exceptionsR5R7tsix.moves.urllib_parsetmovesturllib_parseRMtrequestbuilder.exceptionsRRRRtrequestbuilder.mixinsRRR�RfR�(((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pyt<module>s&"�: