
    	h                         d dl Z d dlZd dlmZ d dlmZmZ d dlmZm	Z	m
Z
mZmZ dZ G d d          Z G d d	          Z G d
 de          Zde	defdZdS )    N)NoReturn)HeadersMutableHeaders)ASGIAppMessageReceiveScopeSend)ztext/event-streamc            	       @    e Zd ZddedededdfdZd	ed
ededdfdZ	dS )GZipMiddleware  	   appminimum_sizecompresslevelreturnNc                 0    || _         || _        || _        d S N)r   r   r   )selfr   r   r   s       f/var/www/html/web-builder-api.evdpl.com/venv/lib/python3.11/site-packages/starlette/middleware/gzip.py__init__zGZipMiddleware.__init__   s    (*    scopereceivesendc                 N  K   |d         dk    r|                      |||           d {V  d S t          |          }d|                    dd          v r"t          | j         | j        | j                  }nt          | j         | j                  } ||||           d {V  d S )Ntypehttp)r   gzipAccept-Encoding )r   )r   r   getGZipResponderr   r   IdentityResponder)r   r   r   r   headers	responders         r   __call__zGZipMiddleware.__call__   s      =F""((5'4000000000F&&&W[[!2B7777%dh0AQUQcdddII)$(D4EFFIiw-----------r   )r   r   )
__name__
__module____qualname__r   intr   r	   r   r
   r'    r   r   r   r      sz        + +G +3 +S +Y] + + + +
.E .G .4 .D . . . . . .r   r   c                   j    e Zd ZU eed<   dededdfdZdede	d	e
ddfd
ZdeddfdZdededefdZdS )r$   content_encodingr   r   r   Nc                 r    || _         || _        t          | _        i | _        d| _        d| _        d| _        d S )NF)r   r   unattached_sendr   initial_messagestartedcontent_encoding_setcontent_type_is_excluded)r   r   r   s      r   r   zIdentityResponder.__init__#   s=    ()	(*$)!(-%%%r   r   r   r   c                 \   K   || _         |                     ||| j                   d {V  d S r   )r   r   send_with_compression)r   r   r   r   s       r   r'   zIdentityResponder.__call__,   s>      	hhugt'ABBBBBBBBBBBr   messagec                   K   |d         }|dk    r`|| _         t          | j         d                   }d|v | _        |                    dd                              t
                    | _        d S |dk    rY| j        s| j        rK| j        s'd	| _        |                     | j                    d {V  |                     |           d {V  d S |dk    r| j        sd	| _        |                    d
d          }|                    dd          }t          |          | j
        k     r?|s=|                     | j                    d {V  |                     |           d {V  d S |s|                     |d          }t          | j         d                   }|                    d           ||d
         k    r.| j        |d<   t          t          |                    |d<   ||d
<   |                     | j                    d {V  |                     |           d {V  d S |                     |d	          }t          | j         d                   }|                    d           ||d
         k    r| j        |d<   |d= ||d
<   |                     | j                    d {V  |                     |           d {V  d S |dk    rc|                    d
d          }|                    dd          }|                     ||          |d
<   |                     |           d {V  d S |dk    r=|                     | j                    d {V  |                     |           d {V  d S d S )Nr   zhttp.response.startr%   )rawzcontent-encodingzcontent-typer!   zhttp.response.bodyTbodyr   	more_bodyF)r;   r    zContent-EncodingzContent-Lengthzhttp.response.pathsend)r1   r   r3   r"   
startswithDEFAULT_EXCLUDED_CONTENT_TYPESr4   r2   r   lenr   apply_compressionr   add_vary_headerr.   str)r   r7   message_typer%   r:   r;   s         r   r6   z'IdentityResponder.send_with_compression0   s     v000 $+D $"6y"ABBBG(:g(ED%,3KK,K,K,V,VWu,v,vD)))111t7P1TXTq1< 6#ii 4555555555))G$$$$$$$$$$$111$,1DL;;vs++DK77I4yy4,,,Y,ii 4555555555ii((((((((((( )--de-DD(T-A)-LMMM''(9:::76?**262GG./03CIIG,-&*GFOii 4555555555ii((((((((((( --dd-CC(T-A)-LMMM''(9:::76?**262GG./ 01&*GFOii 4555555555ii(((((((((((111;;vs++DK77I"44TY4OOGFO))G$$$$$$$$$$$555))D0111111111))G$$$$$$$$$$$ 65r   r:   r;   c                    |S )zApply compression on the response body.

        If more_body is False, any compression file should be closed. If it
        isn't, it won't be closed automatically until all background tasks
        complete.
        r,   r   r:   r;   s      r   r?   z#IdentityResponder.apply_compressionm   s	     r   )r(   r)   r*   rA   __annotations__r   r+   r   r	   r   r
   r'   r   r6   bytesboolr?   r,   r   r   r$   r$       s         .G .3 .4 . . . .CE CG C4 CD C C C C;%7 ;%t ;% ;% ;% ;%ze 4 E      r   r$   c            	       f     e Zd ZdZddedededdf fdZd	ed
ede	ddf fdZ
dededefdZ xZS )r#   r   r   r   r   r   r   Nc                     t                                          ||           t          j                    | _        t          j        d| j        |          | _        d S )Nwb)modefileobjr   )superr   ioBytesIOgzip_bufferr   GzipFile	gzip_file)r   r   r   r   	__class__s       r   r   zGZipResponder.__init__z   sK    l+++:<<D$:JZghhhr   r   r   r   c                    K   | j         5  | j        5  t                                          |||           d {V  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r   )rP   rR   rM   r'   )r   r   r   r   rS   s       r   r'   zGZipResponder.__call__   s       	9 	9t~ 	9 	9''""5'4888888888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s3   A!*A	A!	A	A!A	A!!A%(A%r:   r;   c                   | j                             |           |s| j                                          | j                                        }| j                            d           | j                                         |S )Nr   )rR   writecloserP   getvalueseektruncaterD   s      r   r?   zGZipResponder.apply_compression   sy    T""" 	#N  """((**a   !!###r   )r   )r(   r)   r*   r.   r   r+   r   r	   r   r
   r'   rF   rG   r?   __classcell__)rS   s   @r   r#   r#   w   s        i iG i3 is iSW i i i i i i9E 9G 94 9D 9 9 9 9 9 9	e 	4 	E 	 	 	 	 	 	 	 	r   r#   r7   r   c                 $   K   t          d          )Nzsend awaitable not set)RuntimeError)r7   s    r   r0   r0      s      
/
0
00r   )r   rN   typingr   starlette.datastructuresr   r   starlette.typesr   r   r   r	   r
   r=   r   r$   r#   r0   r,   r   r   <module>ra      s!    				       < < < < < < < < B B B B B B B B B B B B B B!7 . . . . . . . .*T T T T T T T Tn    %   217 1x 1 1 1 1 1 1r   