
    pge                     z    d dl Z d dlmZmZmZmZmZmZmZm	Z	m
Z
 d dlmZ  G d de          Zd Zd Zd Zd	 ZdS )
    N)	_CHECKSUM_CLSAwsChunkedWrapperFlexibleChecksumError_apply_request_header_checksum_handle_streaming_responsebase64conditionally_calculate_md5determine_content_lengthlogger)resolve_awaitablec                        e Zd Zd Zd Zd ZdS )AioAwsChunkedWrapperc                   K   t          | j                            | j                             d {V }t	          t          |                    dd                              d          }| | _        | j        r| j        	                    |           | j        rT| j        rM| j
                            d          }| j                                                            d          }d||fz  S d||fz  S )N   asciis   0
%s:%s

s   %s
%s
)r   _rawread_chunk_sizehexlenencode	_complete	_checksumupdate_checksum_name	b64digest)self	raw_chunkhex_lennamechecksums        8lib/python3.11/site-packages/aiobotocore/httpchecksum.py_make_chunkz AioAwsChunkedWrapper._make_chunk   s      
 ,DINN4;K,L,LMMMMMMMM	c)nn%%abb)0099&> 	-N!!),,,> 	<dn 	<&--g66D~//1188AAH(D(+;;;'9!555    c                     | S N r   s    r"   	__aiter__zAioAwsChunkedWrapper.__aiter__&   s    r$   c                 d   K   | j         s|                                  d {V S t                      r&   )r   r#   StopAsyncIterationr(   s    r"   	__anext__zAioAwsChunkedWrapper.__anext__)   s@      . 	,))+++++++++ """r$   N)__name__
__module____qualname__r#   r)   r,   r'   r$   r"   r   r      sA        6 6 6&  # # # # #r$   r   c                   K   |d         }|                     di           }|                     d          }|sd S |D ]{}d|z  }||vrd||         v r|j        rt          | ||          |d<   nt          | ||           d {V |d<   |d                              di           }||d<   ||d         d<    d S t	          j        d	| d
           d S )Nheadersr!   response_algorithmsx-amz-checksum-%s-bodycontextresponse_algorithmzXSkipping checksum validation. Response did not contain one of the following algorithms: .)gethas_streaming_outputr   _handle_bytes_responser   info)	http_responseresponser6   operation_modelr1   checksum_context
algorithms	algorithmheader_names	            r"   handle_checksum_bodyrD   /   s[      y!G{{:r22!%%&;<<J   	)I5g%%
 '+&&&/ 	9x   HV &<x& &            HV
 $I.22:rBB1:-.*:J'
K	/!+	/ 	/ 	/    r$   c                 X  K   | j          d {V }d|z  }t          j        |          } |            }|                    |           |d         |         }|                                t          j        |          k    r*d|d|                                }t          |          |S )Nr3   r1   zExpected checksum z$ did not match calculated checksum: 	error_msg)	contentr   r9   r   digestr   	b64decoder   r   )	r=   r>   rB   r5   rC   checksum_clsr!   expectedrG   s	            r"   r;   r;   Z   s      &&&&&&&D%	1K $Y//L|~~HOOD	";/HF,X66666 ""$$$ 	 $i8888Kr$   c                 \   |                      di                                di           }|                     d          }|sd S |dk    rt          |            d S |d         dk    rt          |            d S |d         dk    rt          |            d S t	          d|d         z  	          )
Nr6   r!   request_algorithmzconditional-md5inheadertrailerzUnknown checksum variant: %srF   )r9   r	   r   _apply_request_trailer_checksumr   )requestr@   rB   s      r"   apply_request_checksumrT   m   s    {{9b1155j"EE $$%899I %%%#G,,,,,	4H	$	$&w/////	4I	%	%'00000#4yF
 
 
 	
r$   c                    |                      di                                di           }|                     d          }|d         }t          j         |d                   }| d         }| d         }||v rd S d|d	<   d
|v r|d
xx         dz  cc<   nd|d
<   ||d<   t          |          }|t          |          |d<   t	          |t
          t          f          rt          j        |          }t          |||          | d<   d S )Nr6   r!   rN   r    rB   r1   r5   chunkedzTransfer-EncodingzContent-Encodingz,aws-chunkedzaws-chunkedzX-Amz-TrailerzX-Amz-Decoded-Content-Length)rK   checksum_name)
r9   r   r
   str
isinstancebytes	bytearrayioBytesIOr   )rS   r@   rB   location_namerK   r1   r5   content_lengths           r"   rR   rR      s>   {{9b1155j"EE $$%899If%M $Y{%;<<Li G6?D $-G W$$ 	"###~5####&3"#,GO-d33N! 36n2E2E./$	*++  z$*!#  GFOOOr$   )r\   botocore.httpchecksumr   r   r   r   r   r   r	   r
   r   aiobotocore._helpersr   r   rD   r;   rT   rR   r'   r$   r"   <module>rb      s   				
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 3 2 2 2 2 2# # # # #, # # #:( ( (V  &
 
 
($ $ $ $ $r$   