o
    Þ­j›  ã                   @   sx   d dl Z d dlZd dlZd dlmZmZ d dlmZmZm	Z	m
Z
mZ G dd„ dƒZG dd„ dƒZded	ejfd
d„ZdS )é    N)ÚHeadersÚMutableHeaders)ÚASGIAppÚMessageÚReceiveÚScopeÚSendc                	   @   sD   e Zd Z	ddedededdfdd	„Zd
edededdfdd„Z	dS )ÚGZipMiddlewareéô  é	   ÚappÚminimum_sizeÚcompresslevelÚreturnNc                 C   s   || _ || _|| _d S ©N)r   r   r   ©Úselfr   r   r   © r   úV/var/www/html/CropPilot/venv/lib/python3.10/site-packages/starlette/middleware/gzip.pyÚ__init__
   s   
zGZipMiddleware.__init__ÚscopeÚreceiveÚsendc                 Ã   sj   �|d dkr)t |d�}d| dd¡v r)t| j| j| jd�}||||ƒI d H  d S |  |||¡I d H  d S )NÚtypeÚhttp)r   ÚgzipúAccept-EncodingÚ )r   )r   ÚgetÚGZipResponderr   r   r   )r   r   r   r   ÚheadersÚ	responderr   r   r   Ú__call__   s   €
ÿzGZipMiddleware.__call__)r
   r   )
Ú__name__Ú
__module__Ú__qualname__r   Úintr   r   r   r   r"   r   r   r   r   r	   	   s    ÿÿÿÿ
þr	   c                	   @   sT   e Zd Zddedededdfdd„Zd	ed
ededdfdd„Z	de
ddfdd„ZdS )r   r   r   r   r   r   Nc                 C   sF   || _ || _t| _i | _d| _d| _t ¡ | _	t
jd| j	|d�| _d S )NFÚwb)ÚmodeÚfileobjr   )r   r   Úunattached_sendr   Úinitial_messageÚstartedÚcontent_encoding_setÚioÚBytesIOÚgzip_bufferr   ÚGzipFileÚ	gzip_filer   r   r   r   r      s   
ÿzGZipResponder.__init__r   r   r   c                 Ã   s"   �|| _ |  ||| j¡I d H  d S r   )r   r   Úsend_with_gzip)r   r   r   r   r   r   r   r"   *   s   €zGZipResponder.__call__Úmessagec                 Ã   sV  �|d }|dkr|| _ t| j d d�}d|v | _d S |dkr;| jr;| js1d| _|  | j ¡I d H  |  |¡I d H  d S |dkrî| jsîd| _| dd	¡}| d
d¡}t|ƒ| jk rm|sm|  | j ¡I d H  |  |¡I d H  d S |s¯| j 	|¡ | j 
¡  | j ¡ }t| j d d�}d|d< tt|ƒƒ|d< | d¡ ||d< |  | j ¡I d H  |  |¡I d H  d S t| j d d�}d|d< | d¡ |d= | j 	|¡ | j ¡ |d< | j d¡ | j ¡  |  | j ¡I d H  |  |¡I d H  d S |dk�r)| dd	¡}| d
d¡}| j 	|¡ |�s| j 
¡  | j ¡ |d< | j d¡ | j ¡  |  |¡I d H  d S d S )Nr   zhttp.response.startr    )Úrawzcontent-encodingzhttp.response.bodyTÚbodyó    Ú	more_bodyFr   zContent-EncodingzContent-Lengthr   r   )r+   r   r-   r,   r   r   Úlenr   r2   ÚwriteÚcloser0   Úgetvaluer   ÚstrÚadd_vary_headerÚseekÚtruncate)r   r4   Úmessage_typer    r6   r8   r   r   r   r3   .   sd   €







ózGZipResponder.send_with_gzip)r   )r#   r$   r%   r   r&   r   r   r   r   r"   r   r3   r   r   r   r   r      s    r   r4   r   c                 Ã   s
   �t dƒ‚)Nzsend awaitable not set)ÚRuntimeError)r4   r   r   r   r*   p   s   €r*   )r   r.   ÚtypingÚstarlette.datastructuresr   r   Ústarlette.typesr   r   r   r   r   r	   r   ÚNoReturnr*   r   r   r   r   Ú<module>   s    S