o
    è’Ojµ  ã                   @   sž   d 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
 ddlmZ e e¡Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdeiZdS )z‰
NOTE: All functions in this module are considered private and are
subject to abrupt breaking changes. Please do not use them directly.

é    N)ÚGzipFile)Úcompress)Ú	urlencode)Úregister_feature_id)Údetermine_content_lengthc                 C   sr   t | ||ƒr5|jd D ]+}t |¡}|dur.t d|¡ ||d ƒ|d< t|d |ƒ  dS t d|¡ qdS dS )zAAttempt to compress the request body using the modeled encodings.Ú	encodingsNz%Compressing request with %s encoding.ÚbodyÚheadersz$Unsupported compression encoding: %s)Ú_should_compress_requestÚrequest_compressionÚCOMPRESSION_MAPPINGÚgetÚloggerÚdebugÚ_set_compression_header)ÚconfigÚrequest_dictÚoperation_modelÚencodingÚencoder© r   úW/var/www/html/pharmsmart-cdr-gen/venv/lib/python3.10/site-packages/botocore/compress.pyÚmaybe_compress_request   s   
÷r   c           	      C   s€   | j dur>| jdkr>|jd ur>t|ƒs#t|d ƒ}d}t ||¡ dS |jr1| ¡ }|j	}d|vS t
|d ƒ}| j}||kS dS )NTÚv2r   z*Body type %s does not support compression.FÚrequiresLength)Údisable_request_compressionÚsignature_versionr   Ú_is_compressible_typeÚtyper   r   Úhas_streaming_inputÚget_streaming_inputÚmetadataÚ_get_body_sizeÚ"request_min_compression_size_bytes)	r   r   r   Ú	body_typeÚlog_msgÚstreaming_inputÚstreaming_metadataÚ	body_sizeÚmin_sizer   r   r   r
   -   s&   ÿþýr
   c                 C   sL   | d }t |tƒrt|ddd� d¡}|| d< t |tttfƒ}|p%t|dƒS )Nr   Túutf-8)Údoseqr   Úread)Ú
isinstanceÚdictr   ÚencodeÚstrÚbytesÚ	bytearrayÚhasattr)r   r   Úis_supported_typer   r   r   r   E   s   
r   c                 C   s$   t | ƒ}|d u rt d| ¡ d}|S )NzCUnable to get length of the request body: %s. Skipping compression.r   )r   r   r   )r   Úsizer   r   r   r"   O   s   ýr"   c                 C   s~   t dƒ t| tƒrt|  d¡ƒS t| ttfƒrt| ƒS t| dƒr=t| dƒr9t| dƒr9|  ¡ }t	| ƒ}|  
|¡ |S t	| ƒS d S )NÚGZIP_REQUEST_COMPRESSIONr*   r,   ÚseekÚtell)r   r-   r0   Úgzip_compressr/   r1   r2   r3   r8   Ú_gzip_compress_fileobjr7   )r   Úcurrent_positionÚcompressed_objr   r   r   Ú_gzip_compress_body[   s   


úr=   c                 C   st   t  ¡ }t|dd��!}	 |  d¡}|snt|tƒr| d¡}| |¡ qW d   ƒ n1 s.w   Y  | d¡ |S )NÚwb)ÚfileobjÚmodeTi    r*   r   )	ÚioÚBytesIOr   r,   r-   r0   r/   Úwriter7   )r   r<   ÚgzÚchunkr   r   r   r:   j   s   



úü
r:   c                 C   s4   |   d¡}|d u r|| d< d S |› d|› �| d< d S )NzContent-Encodingú,)r   )r	   r   Ú	ce_headerr   r   r   r   x   s   
r   Úgzip)Ú__doc__rA   ÚloggingrH   r   r   r9   Úbotocore.compatr   Úbotocore.useragentr   Úbotocore.utilsr   Ú	getLoggerÚ__name__r   r   r
   r   r"   r=   r:   r   r   r   r   r   r   Ú<module>   s"   

