§
    7xÅj=D  ã                   ó0  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZmZ  ej        e¦  «        Z e¦   «         Z dZ!dZ"d„ Z# G d„ d¦  «        Z$ G d„ d¦  «        Z%dS )é    N)Úparsers)Úcreate_request_object)Úget_current_datetime)ÚHTTPClientErrorÚInvalidConfigError)Úget_global_history_recorder)Úfirst_non_none_response)Úhandle_checksum_body)ÚURLLib3Session)ÚStreamingBody)Úget_environ_proxiesÚis_valid_endpoint_urlÚis_valid_ipv6_endpoint_urlé<   é
   c                 ó  — | j         | j        d|j        idœ}|d         dk    r| j        |d<   nW|j        r| j        |d<   nE|j        r4|d                              d¦  «        }t          | j        |¦  «        |d<   n
| j        |d<   |S )aµ  Convert an HTTP response object to a request dict.

    This converts the HTTP response object to a dictionary.

    :type http_response: botocore.awsrequest.AWSResponse
    :param http_response: The HTTP response from an AWS service request.

    :rtype: dict
    :return: A response dictionary which will contain the following keys:
        * headers (dict)
        * status_code (int)
        * body (string or file-like object)

    Úoperation_name)ÚheadersÚstatus_codeÚcontextr   é,  Úbodyr   zcontent-length)	r   r   ÚnameÚcontentÚhas_event_stream_outputÚrawÚhas_streaming_outputÚgetr   )Úhttp_responseÚoperation_modelÚresponse_dictÚlengths       úBC:\Projects\Historical\venv\Lib\site-packages\botocore/endpoint.pyÚconvert_to_response_dictr$   +   s·   € ð  !Ô(Ø$Ô0à˜oÔ2ð
ðð €Mð �]Ô# sÒ*Ð*Ø -Ô 5ˆ�fÑÐØ	Ô	0ð 6Ø -Ô 1ˆ�fÑÐØ	Ô	-ð 6Ø˜yÔ)×-Ò-Ð.>Ñ?Ô?ˆÝ -¨mÔ.?ÀÑ HÔ Hˆ�fÑÐà -Ô 5ˆ�fÑØÐó    c                   ó‚   — e Zd ZdZ	 	 dd„Zd„ Zd„ Zd„ Zdd„Zd„ Z	d	„ Z
d
„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Z	 	 dd„Zd„ ZdS )ÚEndpointa,  
    Represents an endpoint for a particular service in a specific
    region.  Only an endpoint can make requests.

    :ivar service: The Service object that describes this endpoints
        service.
    :ivar host: The fully qualified endpoint hostname.
    :ivar session: The session object.
    Nc                 óÞ   — || _         || _        || _        t          j        ¦   «         | _        |€t          j        ¦   «         }|| _        || _	        | j	        €t          ¦   «         | _	        d S d S ©N)Ú_endpoint_prefixÚ_event_emitterÚhostÚ	threadingÚLockÚ_lockr   ÚResponseParserFactoryÚ_response_parser_factoryÚhttp_sessionr   )Úselfr,   Úendpoint_prefixÚevent_emitterÚresponse_parser_factoryr2   s         r#   Ú__init__zEndpoint.__init__X   st   € ð !0ˆÔØ+ˆÔØˆŒ	Ý”^Ñ%Ô%ˆŒ
Ø"Ð*Ý&-Ô&CÑ&EÔ&EÐ#Ø(?ˆÔ%Ø(ˆÔØÔÐ$Ý .Ñ 0Ô 0ˆDÔÐÐð %Ð$r%   c                 ó&   — | j         › d| j        › d�S )Nú(ú))r*   r,   ©r3   s    r#   Ú__repr__zEndpoint.__repr__k   s   € ØÔ'Ð6Ð6¨$¬)Ð6Ð6Ð6Ð6r%   c                 ó8   — | j                              ¦   «          d S r)   )r2   Úcloser;   s    r#   r>   zEndpoint.closen   s   € ØÔ×ÒÑ!Ô!Ð!Ð!Ð!r%   c                 óf   — t                                d||¦  «         |                      ||¦  «        S )Nz%Making request for %s with params: %s)ÚloggerÚdebugÚ_send_request)r3   r    Úrequest_dicts      r#   Úmake_requestzEndpoint.make_requestq   s9   € Ý�ŠØ3ØØñ	
ô 	
ð 	
ð
 ×!Ò! ,°Ñ@Ô@Ð@r%   c                 ó,  — t          |¦  «        }|rmt          |j        |j        g¦  «        |_        |j        j                             ¦   «         }d|› d|j        › �}| j	         
                    |||j        ¬¦  «         |                      |¦  «        }|S )Nzrequest-created.ú.)Úrequestr   )r   Úanyr   r   Ústream_outputÚservice_modelÚ
service_idÚ	hyphenizer   r+   ÚemitÚprepare_request)r3   Úparamsr    rG   rK   Ú
event_nameÚprepared_requests          r#   Úcreate_requestzEndpoint.create_requesty   s³   € Ý'¨Ñ/Ô/ˆØð 	Ý$'à#Ô8Ø#Ô;ðñ%ô %ˆGÔ!ð )Ô6ÔA×KÒKÑMÔMˆJØO¨JÐOÐO¸Ô9MÐOÐOˆJØÔ×$Ò$ØØØ.Ô3ð %ñ ô ð ð
  ×/Ò/°Ñ8Ô8ÐØÐr%   c                 ó”   — |                      ¦   «         D ]2\  }}t          |t          ¦  «        r|                     d¦  «        ||<   Œ3d S )Nzutf-8)ÚitemsÚ
isinstanceÚstrÚencode)r3   r   ÚkeyÚvalues       r#   Ú_encode_headerszEndpoint._encode_headersŒ   sO   € à!Ÿ-š-™/œ/ð 	5ð 	5‰JˆC�Ý˜%¥Ñ%Ô%ð 5Ø$Ÿ|š|¨GÑ4Ô4�˜‘øð	5ð 	5r%   c                 ó^   — |                       |j        ¦  «         |                     ¦   «         S r)   )rZ   r   Úprepare©r3   rG   s     r#   rN   zEndpoint.prepare_request’   s(   € Ø×Ò˜Wœ_Ñ-Ô-Ð-Ø�ŠÑ Ô Ð r%   c                 óÈ   — t          ¦   «         }t          j                             |d¦  «        }||z
  }|t          j        |¬¦  «        z   |z   }|                     d¦  «        S )Nz%a, %d %b %Y %H:%M:%S %Z)Úsecondsz%Y%m%dT%H%M%SZ)r   ÚdatetimeÚstrptimeÚ	timedeltaÚstrftime)r3   Úresponse_received_timestampÚdate_headerÚread_timeoutÚlocal_timestampÚdate_conversionÚestimated_skewÚttls           r#   Ú_calculate_ttlzEndpoint._calculate_ttl–   su   € õ /Ñ0Ô0ˆÝ"Ô+×4Ò4ØÐ3ñ
ô 
ˆð )Ð+FÑFˆàÝÔ ¨Ð6Ñ6Ô6ñ7àñð 	ð
 �|Š|Ð,Ñ-Ô-Ð-r%   c                 ó,  — |d         j                              d¦  «        }|                     d¦  «        }|rZ|sZ	 t          ¦   «         }|                      |||¦  «        |d<   d S # t          $ r  t
                               dd¬¦  «         Y d S w xY wd S d S )Nr   ÚDateÚhas_streaming_inputrj   z9Exception received when updating retries context with TTLT©Úexc_info)r   r   r   rk   Ú	Exceptionr@   rA   )r3   Úretries_contextrf   Úsuccess_responseÚresponse_date_headerrn   rd   s          r#   Ú_set_ttlzEndpoint._set_ttl¥   sÞ   € Ø/°Ô2Ô:×>Ò>¸vÑFÔFÐØ-×1Ò1Ð2GÑHÔHÐØð 	Ð(;ð 	ðÝ.BÑ.DÔ.DÐ+Ø)-×)<Ò)<Ø/Ø(Ø ñ*ô *� Ñ&Ð&Ð&øõ
 ð ð ð Ý—’ØOØ!ð ñ ô ð ð ð ð ðøøøð	ð 	ð 	ð 	s   »(A% Á%&BÂBc                 ó  — |                      di ¦  «        }||d<   d|vr#t          t          j        ¦   «         ¦  «        |d<   |r=|                     d¦  «        }|€|d         j        }|                      |||¦  «         d S d S )NÚretriesÚattemptzinvocation-idrf   Úclient_config)Ú
setdefaultrV   ÚuuidÚuuid4r   rf   ru   )r3   r   rx   rs   rr   rf   s         r#   Ú_update_retries_contextz Endpoint._update_retries_context¶   sš   € Ø!×,Ò,¨Y¸Ñ;Ô;ˆØ%,ˆ˜	Ñ"Ø /Ð1Ð1Ý/2µ4´:±<´<Ñ/@Ô/@ˆO˜OÑ,àð 	KØ"Ÿ;š; ~Ñ6Ô6ˆLØÐ#Ø& Ô7ÔD�Ø�MŠM˜/¨<Ð9IÑJÔJÐJÐJÐJð		Kð 	Kr%   c                 ó  — d}|d         }|                       ||¦  «         |                      ||¦  «        }|                      |||¦  «        \  }}|                      |||||¦  «        ry|dz  }|                       |||¦  «         |                     ¦   «          |                      ||¦  «        }|                      |||¦  «        \  }}|                      |||||¦  «        °y|� d|d         v r|dz
  }||d         d         d<   |�|‚|S )Né   r   ÚResponseMetadataÚRetryAttempts)r}   rR   Ú_get_responseÚ_needs_retryÚreset_stream)	r3   rC   r    Úattemptsr   rG   rs   Ú	exceptionÚtotal_retriess	            r#   rB   zEndpoint._send_requestÂ   sn  € ØˆØ˜yÔ)ˆØ×$Ò$ W¨hÑ7Ô7Ð7Ø×%Ò% l°OÑDÔDˆØ&*×&8Ò&8Ø�_ gñ'
ô '
Ñ#Ð˜)ð ×ÒØØØØØñ
ô 
ð 	ð ˜‰MˆHØ×(Ò(¨°(Ð<LÑMÔMÐMð
 × Ò Ñ"Ô"Ð"à×)Ò)¨,¸ÑHÔHˆGØ*.×*<Ò*<Ø˜¨'ñ+ô +Ñ'Ð˜ið! ×ÒØØØØØñ
ô 
ð 	ð( Ð(Ø"Ð&6°qÔ&9Ð9Ð9ð % q™LˆMàð ˜QÔÐ 2Ô3°OÑDð Ð ØˆOà#Ð#r%   c                 ó  — |                       |||¦  «        \  }}d d ||dœ}|�|\  }}||d<   t          ||¦  «        |d<   |j        j                             ¦   «         }	 | j        j        d|	› d|j        › �fi |¤Ž ||fS )N)r!   Úparsed_responser   r†   r‰   r!   zresponse-received.rF   )Ú_do_get_responser$   rJ   rK   rL   r+   rM   r   )
r3   rG   r    r   rs   r†   Úkwargs_to_emitr   r‰   rK   s
             r#   r‚   zEndpoint._get_responseë   sÙ   € ð '+×&;Ò&;Ø�_ gñ'
ô '
Ñ#Ð˜)ð "Ø#ØØ"ð	
ð 
ˆð Ð'Ø-=Ñ*ˆM˜?Ø0?ˆNÐ,Ñ-Ý.FØ˜ñ/ô /ˆN˜?Ñ+ð %Ô2Ô=×GÒGÑIÔIˆ
Ø ˆÔÔ ØD ÐDÐD¨oÔ.BÐDÐDð	
ð 	
àð	
ð 	
ð 	
ð   Ð*Ð*r%   c           	      ód  — 	 t                                d|¦  «         t                               d|j        |j        |j        |j        |j        dœ¦  «         |j	        j
                             ¦   «         }d|› d|j        › �}| j                             ||¬¦  «        }t          |¦  «        }|€|                      |¦  «        }nM# t"          $ r}d |fcY d }~S d }~wt$          $ r*}t                                dd¬	¦  «         d |fcY d }~S d }~ww xY wt'          ||¦  «        }	t)          ||	||¦  «         |	                     ¦   «         }
|j        |
d
<   t                               d|
¦  «         |j	        j        }i }| j                             d|› d|j        › �||	|¬¦  «         | j                             |¦  «        }|                     |	|j        ¦  «        }|                     |¦  «         |j        dk    r|                      |	|||¦  «         t                               d|¦  «         ||fd fS )NzSending http request: %sÚHTTP_REQUEST)Úmethodr   Ú	streamingÚurlr   zbefore-send.rF   )rG   z-Exception received when sending HTTP request.Tro   r�   ÚHTTP_RESPONSEzbefore-parse.)r    r!   Úcustomized_response_dictr   ÚPARSED_RESPONSE)r@   rA   Úhistory_recorderÚrecordrŽ   r   rn   r�   r   rJ   rK   rL   r   r+   rM   r	   Ú_sendr   rq   r$   r
   Úcopyr   Úresolved_protocolr1   Úcreate_parserÚparseÚoutput_shapeÚupdater   Ú_add_modeled_error_fields)r3   rG   r    r   rK   rP   Ú	responsesr   Úer!   Úhttp_response_record_dictÚprotocolr’   Úparserr‰   s                  r#   rŠ   zEndpoint._do_get_response  s¿  € ð	Ý�LŠLÐ3°WÑ=Ô=Ð=Ý×#Ò#Øà%œnØ&œØ!0Ô!DØ"œ;Ø#œLðð ñ	ô 	ð 	ð )Ô6ÔA×KÒKÑMÔMˆJØK¨
ÐKÐK°_Ô5IÐKÐKˆJØÔ+×0Ò0°ÀWÐ0ÑMÔMˆIÝ3°IÑ>Ô>ˆMØÐ$Ø $§
¢
¨7Ñ 3Ô 3�øøÝð 	ð 	ð 	Ø˜!�9ÐÐÐÐÐÐøøøøÝð 	ð 	ð 	Ý�LŠLØ?È$ð ñ ô ð ð ˜!�9ÐÐÐÐÐÐøøøøð		øøøõ 1Ø˜?ñ
ô 
ˆõ 	ØØØØñ		
ô 	
ð 	
ð %2×$6Ò$6Ñ$8Ô$8Ð!àÔ0ð 	" +Ñ.õ 	×Ò Ð1JÑKÔKÐKà"Ô0ÔBˆØ#%Ð ØÔ× Ò Ø?˜JÐ?Ð?¨Ô)=Ð?Ð?Ø+Ø'Ø%=ð	 	!ñ 	
ô 	
ð 	
ð Ô.×<Ò<¸XÑFÔFˆØ Ÿ,š,Ø˜?Ô7ñ
ô 
ˆð 	×ÒÐ7Ñ8Ô8Ð8ð Ô$¨Ò+Ð+Ø×*Ò*ØØØØñ	ô ð õ 	×ÒÐ 1°?ÑCÔCÐCØ˜Ð/°Ð5Ð5s0   ‚CC Ã
DÃCÃDÃDÃ%D
ÄDÄ
Dc                 óö   — |                      di ¦  «                              d¦  «        }|€d S |j        }|                     |¦  «        }|€d S |                     ||¦  «        }|                     |¦  «         d S )NÚErrorÚCode)r   rJ   Úshape_for_error_coderš   rœ   )	r3   r!   r‰   r    r¢   Ú
error_coderJ   Úerror_shapeÚmodeled_parses	            r#   r�   z"Endpoint._add_modeled_error_fieldsN  s…   € ð %×(Ò(¨°"Ñ5Ô5×9Ò9¸&ÑAÔAˆ
ØÐØˆFØ'Ô5ˆØ#×8Ò8¸ÑDÔDˆØÐØˆFØŸš ]°KÑ@Ô@ˆà×Ò˜}Ñ-Ô-Ð-Ð-Ð-r%   c           	      ó*  — |j         j                             ¦   «         }d|› d|j        › �}| j                             ||| ||||¬¦  «        }t          |¦  «        }	|	�|	du rdS t                               d|	¦  «         t          j
        |	¦  «         dS )Nzneeds-retry.rF   )ÚresponseÚendpointÚ	operationr…   Úcaught_exceptionrC   Fz3Response received to retry, sleeping for %s secondsT)rJ   rK   rL   r   r+   rM   r	   r@   rA   ÚtimeÚsleep)
r3   r…   r    rC   r«   r®   rK   rP   rž   Úhandler_responses
             r#   rƒ   zEndpoint._needs_retry`  sÁ   € ð %Ô2Ô=×GÒGÑIÔIˆ
ØG JÐGÐG°Ô1EÐGÐGˆ
ØÔ'×,Ò,ØØØØ%ØØ-Ø%ð -ñ 
ô 
ˆ	õ 3°9Ñ=Ô=ÐØÐ#Ð'7¸5Ð'@Ð'@Ø�5õ �LŠLØEØ ñô ð õ ŒJÐ'Ñ(Ô(Ð(Ø�4r%   c                 ó6   — | j                              |¦  «        S r)   )r2   Úsendr]   s     r#   r–   zEndpoint._send€  s   € ØÔ ×%Ò% gÑ.Ô.Ð.r%   )NNr)   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r7   r<   r>   rD   rR   rZ   rN   rk   ru   r}   rB   r‚   rŠ   r�   rƒ   r–   © r%   r#   r'   r'   M   s?  € € € € € ðð ð !%Øð1ð 1ð 1ð 1ð&7ð 7ð 7ð"ð "ð "ðAð Að Að ð  ð  ð  ð&5ð 5ð 5ð!ð !ð !ð.ð .ð .ðð ð ð"
Kð 
Kð 
Kð 
Kð'$ð '$ð '$ðR+ð +ð +ð8E6ð E6ð E6ðN.ð .ð .ð. Øðð ð ð ð@/ð /ð /ð /ð /r%   r'   c            	       ó@   — e Zd Zd„ Zddeeeddddf	d„Zd„ Zd„ Z	d„ Z
dS )ÚEndpointCreatorc                 ó   — || _         d S r)   )r+   )r3   r5   s     r#   r7   zEndpointCreator.__init__…  s   € Ø+ˆÔÐÐr%   Nc           	      óR  — t          |¦  «        s!t          |¦  «        st          d|› �¦  «        ‚|	€|                      |¦  «        }	|j        }t
                               d||¦  «          |||	|                      |¦  «        ||
||¬¦  «        }t          ||| j	        ||¬¦  «        S )NzInvalid endpoint: zSetting %s timeout as %s)ÚtimeoutÚproxiesÚverifyÚmax_pool_connectionsÚsocket_optionsÚclient_certÚproxies_config)r4   r5   r6   r2   )
r   r   Ú
ValueErrorÚ_get_proxiesr4   r@   rA   Ú_get_verify_valuer'   r+   )r3   rJ   Úregion_nameÚendpoint_urlr¿   r6   r½   rÀ   Úhttp_session_clsr¾   rÁ   rÂ   rÃ   r4   r2   s                  r#   Úcreate_endpointzEndpointCreator.create_endpointˆ  sà   € õ %Øñ
ô 
ð 	Bå,¨\Ñ:Ô:ð	Bõ Ð@°,Ð@Ð@ÑAÔAÐAàˆ?Ø×'Ò'¨Ñ5Ô5ˆGØ'Ô7ˆå�ŠÐ/°À'ÑJÔJÐJØ'Ð'ØØØ×)Ò)¨&Ñ1Ô1Ø!5Ø)Ø#Ø)ð
ñ 
ô 
ˆõ ØØ+ØÔ-Ø$;Ø%ð
ñ 
ô 
ð 	
r%   c                 ó    — t          |¦  «        S r)   )r   )r3   r�   s     r#   rÅ   zEndpointCreator._get_proxies³  s   € õ # 3Ñ'Ô'Ð'r%   c                 ó–   — |�|                       |¦  «        S |                       t          j                             dd¦  «        ¦  «        S )NÚREQUESTS_CA_BUNDLET)Ú_validate_verify_valueÚosÚenvironr   ©r3   r¿   s     r#   rÆ   z!EndpointCreator._get_verify_value¸  sL   € ð ÐØ×.Ò.¨vÑ6Ô6Ð6ð ×*Ò*ÝŒJ�NŠNÐ/°Ñ6Ô6ñ
ô 
ð 	
r%   c                 óx   — t          |t          ¦  «        r$|                     ¦   «         st          d¬¦  «        ‚|S )Nz»Invalid CA bundle: the configured value (ca_bundle, AWS_CA_BUNDLE, REQUESTS_CA_BUNDLE, or verify) resolved to an empty or whitespace-only string. Provide a valid path to a CA bundle file.)Ú	error_msg)rU   rV   Ústripr   rÑ   s     r#   rÎ   z&EndpointCreator._validate_verify_valueÇ  sF   € Ý�f�cÑ"Ô"ð 	¨6¯<ª<©>¬>ð 	Ý$ð0ðñ ô ð ð ˆr%   )r´   rµ   r¶   r7   ÚDEFAULT_TIMEOUTÚMAX_POOL_CONNECTIONSr   rÊ   rÅ   rÆ   rÎ   r¸   r%   r#   rº   rº   „  s‚   € € € € € ð,ð ,ð ,ð Ø $ØØ1Ø'ØØØØð)
ð )
ð )
ð )
ðV(ð (ð (ð

ð 
ð 
ð
ð 
ð 
ð 
ð 
r%   rº   )&r`   ÚloggingrÏ   r-   r¯   r{   Úbotocorer   Úbotocore.awsrequestr   Úbotocore.compatr   Úbotocore.exceptionsr   r   Úbotocore.historyr   Úbotocore.hooksr	   Úbotocore.httpchecksumr
   Úbotocore.httpsessionr   Úbotocore.responser   Úbotocore.utilsr   r   r   Ú	getLoggerr´   r@   r”   rÕ   rÖ   r$   r'   rº   r¸   r%   r#   ú<module>rã      sÅ  ðð €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø €€€Ø €€€à Ð Ð Ð Ð Ð Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø /Ð /Ð /Ð /Ð /Ð /Ø +Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð 
ˆÔ	˜8Ñ	$Ô	$€Ø.Ð.Ñ0Ô0Ð Ø€ØÐ ðð ð ðDt/ð t/ð t/ð t/ð t/ñ t/ô t/ð t/ðn	Mð Mð Mð Mð Mñ Mô Mð Mð Mð Mr%   