Ë
    qPêj=D  ã                   ó   — 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%y)é    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                 óR  — | j                   | j                  d|j                  idœ}|d   dk\  r| j                  |d<   |S |j                  r| j
                  |d<   |S |j                  r/|d   j                  d«      }t        | j
                  |«      |d<   |S | 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       úV/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/botocore/endpoint.pyÚconvert_to_response_dictr$   +   sÏ   € ð  !×(Ñ(Ø$×0Ñ0à˜o×2Ñ2ð
ñ€Mð �]Ñ# sÒ*Ø -× 5Ñ 5ˆ�fÑð Ðð 
×	0Ò	0Ø -× 1Ñ 1ˆ�fÑð Ðð 
×	-Ò	-Ø˜yÑ)×-Ñ-Ð.>Ó?ˆÜ -¨m×.?Ñ.?ÀÓ Hˆ�fÑð Ðð !.× 5Ñ 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y)Ú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        «       | _	        y y ©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   sj   € ð !0ˆÔØ+ˆÔØˆŒ	Ü—^‘^Ó%ˆŒ
Ø"Ð*Ü&-×&CÑ&CÓ&EÐ#Ø(?ˆÔ%Ø(ˆÔØ×ÑÐ$Ü .Ó 0ˆDÕð %r%   c                 ó:   — | j                   › d| j                  › d�S )Nú(ú))r*   r,   ©r3   s    r#   Ú__repr__zEndpoint.__repr__k   s    € Ø×'Ñ'Ð(¨¨$¯)©)¨°AÐ6Ð6r%   c                 ó8   — | j                   j                  «        y r)   )r2   Úcloser;   s    r#   r>   zEndpoint.closen   s   € Ø×Ñ×ÑÕ!r%   c                 óT   — t         j                  d||«       | j                  ||«      S )Nz%Making request for %s with params: %s)ÚloggerÚdebugÚ_send_request)r3   r    Úrequest_dicts      r#   Úmake_requestzEndpoint.make_requestq   s,   € Ü�‰Ø3ØØô	
ð
 ×!Ñ! ,°Ó@Ð@r%   c                 óJ  — t        |«      }|r„t        |j                  |j                  g«      |_        |j
                  j                  j                  «       }d|› d|j                  › �}| j                  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Ñ8Ø#×;Ñ;ðó%ˆGÔ!ð )×6Ñ6×AÑA×KÑKÓMˆJØ+¨J¨<°q¸×9MÑ9MÐ8NÐOˆJØ×Ñ×$Ñ$ØØØ.×3Ñ3ð %ô ð
  ×/Ñ/°Ó8ÐØÐr%   c                 ó~   — |j                  «       D ]*  \  }}t        |t        «      sŒ|j                  d«      ||<   Œ, y )Nzutf-8)ÚitemsÚ
isinstanceÚstrÚencode)r3   r   ÚkeyÚvalues       r#   Ú_encode_headerszEndpoint._encode_headersŒ   s7   € à!Ÿ-™-›/ò 	5‰JˆC�Ü˜%¤Õ%Ø$Ÿ|™|¨GÓ4�˜’ñ	5r%   c                 óX   — | j                  |j                  «       |j                  «       S r)   )rZ   r   Úprepare©r3   rG   s     r#   rN   zEndpoint.prepare_request’   s!   € Ø×Ñ˜WŸ_™_Ô-Ø�‰Ó Ð r%   c                 óº   — t        «       }t        j                  j                  |d«      }||z
  }|t        j                  |¬«      z   |z   }|j	                  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–   sj   € ô /Ó0ˆÜ"×+Ñ+×4Ñ4ØÐ3ó
ˆð )Ð+FÑFˆàÜ× Ñ ¨Ô6ñ7àñð 	ð
 �|‰|Ð,Ó-Ð-r%   c                 óü   — |d   j                   j                  d«      }|j                  d«      }|r%|s"	 t        «       }| j                  |||«      |d<   y y y # t        $ r t
        j                  dd¬«       Y y w xY w)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ÐØ-×1Ñ1Ð2GÓHÐÙÑ(;ðÜ.BÓ.DÐ+Ø)-×)<Ñ)<Ø/Ø(Ø ó*� Ò&ð )<Ðøô ò Ü—‘ØOØ!ð ö ðús   µ A Á A;Á:A;c                 óê   — |j                  di «      }||d<   d|vr t        t        j                  «       «      |d<   |r6|j	                  d«      }|€|d   j
                  }| j                  |||«       y y )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¶   sx   € Ø!×,Ñ,¨Y¸Ó;ˆØ%,ˆ˜	Ñ"Ø /Ñ1Ü/2´4·:±:³<Ó/@ˆO˜OÑ,áØ"Ÿ;™; ~Ó6ˆLØÐ#Ø& Ñ7×DÑD�Ø�M‰M˜/¨<Ð9IÕJð	 r%   c                 ó¸  — d}|d   }| j                  ||«       | j                  ||«      }| j                  |||«      \  }}| j                  |||||«      rf|dz  }| j                  |||«       |j	                  «        | j                  ||«      }| j                  |||«      \  }}| j                  |||||«      rŒf|�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Â   s5  € ØˆØ˜yÑ)ˆØ×$Ñ$ W¨hÔ7Ø×%Ñ% l°OÓDˆØ&*×&8Ñ&8Ø�_ gó'
Ñ#Ð˜)ð ×ÑØØØØØô
ð ˜‰MˆHØ×(Ñ(¨°(Ð<LÔMð
 × Ñ Ô"à×)Ñ)¨,¸ÓHˆGØ*.×*<Ñ*<Ø˜¨'ó+Ñ'Ð˜ið! ×ÑØØØØØõ
ð( Ð(Ø"Ð&6°qÑ&9Ñ9ð % q™LˆMàð ˜QÑÐ 2Ñ3°OÑDð Ð ØˆOà#Ð#r%   c                 ó  — | j                  |||«      \  }}d d ||dœ}|�|\  }}||d<   t        ||«      |d<   |j                  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Ñ2×=Ñ=×GÑGÓIˆ
Ø ˆ×Ñ× Ñ Ø   ¨A¨o×.BÑ.BÐ-CÐDñ	
àò	
ð   Ð*Ð*r%   c           	      ót  — 	 t         j                  d|«       t        j                  d|j                  |j
                  |j                  |j                  |j                  dœ«       |j                  j                  j                  «       }d|› d|j                  › �}| j                  j                  ||¬«      }t        |«      }|€| j!                  |«      }t'        ||«      }	t)        ||	||«       |	j+                  «       }
|j,                  |
d
<   t        j                  d|
«       |j                  j.                  }i }| j                  j                  d|› d|j                  › �||	|¬«       | j0                  j3                  |«      }|j5                  |	|j6                  «      }|j9                  |«       |j:                  dk\  r| j=                  |	|||«       t        j                  d|«       ||fd fS # t"        $ r}d |fcY d }~S d }~wt$        $ r%}t         j                  dd¬	«       d |fcY d }~S d }~ww xY w)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  sD  € ð	Ü�L‰LÐ3°WÔ=Ü×#Ñ#Øà%Ÿn™nØ&Ÿ™Ø!0×!DÑ!DØ"Ÿ;™;Ø#ŸL™Lñô	ð )×6Ñ6×AÑA×KÑKÓMˆJØ'¨
 |°1°_×5IÑ5IÐ4JÐKˆJØ×+Ñ+×0Ñ0°ÀWÐ0ÓMˆIÜ3°IÓ>ˆMØÐ$Ø $§
¡
¨7Ó 3�ô 1Ø˜?ó
ˆô 	ØØØØô		
ð %2×$6Ñ$6Ó$8Ð!à×0Ñ0ð 	" +Ñ.ô 	×Ñ Ð1JÔKà"×0Ñ0×BÑBˆØ#%Ð Ø×Ñ× Ñ Ø˜J˜< q¨×)=Ñ)=Ð(>Ð?Ø+Ø'Ø%=ð	 	!ô 	
ð ×.Ñ.×<Ñ<¸XÓFˆØ Ÿ,™,Ø˜?×7Ñ7ó
ˆð 	×ÑÐ7Ô8ð ×$Ñ$¨Ò+Ø×*Ñ*ØØØØô	ô 	×ÑÐ 1°?ÔCØ˜Ð/°Ð5Ð5øôe ò 	Ø˜!�9ÕûÜò 	Ü�L‰LØ?È$ð ô ð ˜!�9Õûð		ús0   ‚CG4 Ç4	H7Ç=HÈ H7ÈH7ÈH2È,H7È2H7c                 óÒ   — |j                  di «      j                  d«      }|€y |j                  }|j                  |«      }|€y |j                  ||«      }|j	                  |«       y )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  sl   € ð %×(Ñ(¨°"Ó5×9Ñ9¸&ÓAˆ
ØÐØØ'×5Ñ5ˆØ#×8Ñ8¸ÓDˆØÐØØŸ™ ]°KÓ@ˆà×Ñ˜}Õ-r%   c           	      ó.  — |j                   j                  j                  «       }d|› d|j                  › �}| j                  j                  ||| ||||¬«      }t        |«      }	|	�|	du ryt        j                  d|	«       t        j                  |	«       y)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Ñ2×=Ñ=×GÑGÓIˆ
Ø# J <¨q°×1EÑ1EÐ0FÐGˆ
Ø×'Ñ'×,Ñ,ØØØØ%ØØ-Ø%ð -ó 
ˆ	ô 3°9Ó=ÐØÐ#Ð'7¸5Ñ'@Øô �L‰LØEØ ôô �J‰JÐ'Ô(Ør%   c                 ó8   — | j                   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   sm   „ ñð !%Øó1ò&7ò"òAó ò&5ò!ò.òó"
Kò'$òR+ò8E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
y)ÚEndpointCreatorc                 ó   — || _         y r)   )r+   )r3   r5   s     r#   r7   zEndpointCreator.__init__…  s
   € Ø+ˆÕr%   Nc           	      ó&  — t        |«      st        |«      st        d|› �«      ‚|	€| j                  |«      }	|j                  }t
        j                  d||«        |||	| j                  |«      ||
||¬«      }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©   € ô %Øô
ä,¨\Ô:ÜÐ1°,°Ð@ÓAÐAàˆ?Ø×'Ñ'¨Ó5ˆGØ'×7Ñ7ˆä�‰Ð/°À'ÔJÙ'ØØØ×)Ñ)¨&Ó1Ø!5Ø)Ø#Ø)ô
ˆô ØØ+Ø×-Ñ-Ø$;Ø%ô
ð 	
r%   c                 ó   — t        |«      S r)   )r   )r3   r�   s     r#   rÅ   zEndpointCreator._get_proxies³  s   € ô # 3Ó'Ð'r%   c                 ó†   — |�| j                  |«      S | j                  t        j                  j                  dd«      «      S )NÚREQUESTS_CA_BUNDLET)Ú_validate_verify_valueÚosÚenvironr   ©r3   r¿   s     r#   rÆ   z!EndpointCreator._get_verify_value¸  sC   € ð ÐØ×.Ñ.¨vÓ6Ð6ð ×*Ñ*Ü�J‰J�N‰NÐ/°Ó6ó
ð 	
r%   c                 ó^   — t        |t        «      r|j                  «       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Ç  s-   € Ü�fœcÔ"¨6¯<©<¬>Ü$ð0ôð ð ˆr%   )r´   rµ   r¶   r7   ÚDEFAULT_TIMEOUTÚMAX_POOL_CONNECTIONSr   rÊ   rÅ   rÆ   rÎ   r¸   r%   r#   rº   rº   „  s9   „ ò,ð Ø $ØØ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Ý 0ß CÝ 8Ý 2Ý 6Ý /Ý +÷ñ ð 
ˆ×	Ñ	˜8Ó	$€Ù.Ó0Ð Ø€ØÐ ò÷Dt/ñ t/÷n	Mò Mr%   