Current File : //usr/lib/python2.7/site-packages/requestbuilder/service.pyo
�
!�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@s_|j|�}t|�}dg|D]}	|	j�^q%kr\tj|j�j|d<ny*|jd}
d}t|t�r�t	|d�r�|j
�}nd}x�tr�x�t
t|
�d�D]�\}
}|dkr�|jjd|�tj|�n|jjd|
|
�|j|||||||�}tjj|�}x6t|j��D]"\}}|jjd	||�q[Wtjj�|_y+|jj|d
|jd|dt �}Wn�tj!j"k
rC|
|
kr=|jjd
d
t�|dk	r%|jjd�|j#|�q�q=t	|d�s=q�q=n�nX|j$dkr�Pq�q�W|j$dkra|dkrad|j%kra|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
r }|j)|�Stj!j.k
rZ}|jjdd
t�t/|��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(0RKRRLRMRRNRt
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})(RaR7tstring_typest	ExceptionRBRRcR�RyRR@(RterrRG((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pyt__handle_connection_error�s	$cC@s&|jjddt�t|��dS(Ns
HTTP errorR^(RRfR-R(RR�((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pyRwscC@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_requestthooksRfRQRPRaRTRtcollectionstMappingRDR7R8RLR�RSRMt	parse_qsltqueryR-RUtcgitparse_headertgettparse_multiparttiotBytesIOtbodyRlRVRcR@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�RyRwRKROR'(((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(NRos response time:   %i.%03i secondsi�i�sresponse status: %isresponse header: %s: %s(RcR�RmRnRoRftsecondstmicrosecondsRsterrorRiRaRTRR�R�RDRl(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.pyReks
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�RmR�R�Rtos.pathR�R�Rgtrequests.exceptionsR5R7tsix.moves.urllib_parsetmovesturllib_parseRMtrequestbuilder.exceptionsRRRRtrequestbuilder.mixinsRRR�ReR�(((s:/usr/lib/python2.7/site-packages/requestbuilder/service.pyt<module>s&"�: