
    g                         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      Z G d d      Zded	ej                  fd
Zy)    N)HeadersMutableHeaders)ASGIAppMessageReceiveScopeSendc            	       >    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	y)GZipMiddlewareappminimum_sizecompresslevelreturnNc                 .    || _         || _        || _        y N)r   r   r   selfr   r   r   s       N/var/www/openai/venv/lib/python3.12/site-packages/starlette/middleware/gzip.py__init__zGZipMiddleware.__init__
   s    (*    scopereceivesendc                   K   |d   dk(  r_t        |      }d|j                  dd      v r?t        | j                  | j                  | j
                        } ||||       d {    y | j                  |||       d {    y 7 !7 w)Ntypehttp)r   gzipAccept-Encoding )r   )r   getGZipResponderr   r   r   )r   r   r   r   headers	responders         r   __call__zGZipMiddleware.__call__   s     =F"E*G%6;;)$((D4E4EUYUgUgh	w555hhugt,,, 6,s$   A"B
$B%B
 BB
B
)i  	   )
__name__
__module____qualname__r   intr   r   r   r	   r$    r   r   r   r   	   sE    +G +3 +S +Y] +
-E -G -4 -D -r   r   c            	       N    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e
ddfdZy)r!   r   r   r   r   Nc                     || _         || _        t        | _        i | _        d| _        d| _        t        j                         | _	        t        j                  d| j                  |      | _        y )NFwb)modefileobjr   )r   r   unattached_sendr   initial_messagestartedcontent_encoding_setioBytesIOgzip_bufferr   GzipFile	gzip_filer   s       r   r   zGZipResponder.__init__   sX    ()	(*$)!::<D$:J:JZghr   r   r   r   c                    K   || _         | j                  5  | j                  5  | j                  ||| j                         d {    d d d        d d d        y 7 # 1 sw Y   xY w# 1 sw Y   y xY wwr   )r   r6   r8   r   send_with_gzip)r   r   r   r   s       r   r$   zGZipResponder.__call__$   sU     	t~~((5'4+>+>???  .?  .~sE   A4A(!AAA	A(	A4AA%	!A((A1-A4messagec                   K   |d   }|dk(  r*|| _         t        | j                   d         }d|v | _        y |dk(  r\| j                  rP| j                  s*d| _        | j	                  | j                          d {    | j	                  |       d {    y |dk(  rD| j                  s7d| _        |j                  dd	      }|j                  d
d      }t        |      | j                  k  r?|s=| j	                  | j                          d {    | j	                  |       d {    y |s| j                  j                  |       | j                  j                          | j                  j                         }t        | j                   d         }d|d<   t        t        |            |d<   |j                  d       ||d<   | j	                  | j                          d {    | j	                  |       d {    y t        | j                   d         }d|d<   |j                  d       |d= | j                  j                  |       | j                  j                         |d<   | j                  j!                  d       | j                  j#                          | j	                  | j                          d {    | j	                  |       d {    y |dk(  r|j                  dd	      }|j                  d
d      }| j                  j                  |       |s| j                  j                          | j                  j                         |d<   | j                  j!                  d       | j                  j#                          | j	                  |       d {    y y 7 67  7 7 7 7 7 7 7 w)Nr   zhttp.response.startr"   )rawzcontent-encodingzhttp.response.bodyTbodyr   	more_bodyFr   zContent-EncodingzContent-Lengthr   r   )r1   r   r3   r2   r   r    lenr   r8   writecloser6   getvaluer   stradd_vary_headerseektruncate)r   r;   message_typer"   r>   r?   s         r   r:   zGZipResponder.send_with_gzip)   s4    v00 $+D $"6"6y"ABG(:g(ED%11d6O6O<<#ii 4 4555))G$$$11$,,DL;;vs+DK7I4y4,,,Yii 4 4555ii((($$T*$$&''002(T-A-A)-LM.4*+,/D	N()''(9:"&ii 4 4555ii((( )T-A-A)-LM.4*+''(9:,-$$T*"&"2"2";";"=  %%a(  ))+ii 4 4555ii(((11;;vs+DK7INN  &$$&"..779GFO!!!$%%'))G$$$ 2O 6$ 6( 6( 6( %s   A7O9N/:ON2A;ON5O'N8(B?O'N;(O N>COOOOCO(O)O2O5O8O;O>OOOO)r%   )r&   r'   r(   r   r)   r   r   r   r	   r$   r   r:   r*   r   r   r!   r!      sb    iG i3 is iSW i@E @G @4 @D @
?%G ?% ?%r   r!   r;   r   c                     K   t        d      w)Nzsend awaitable not set)RuntimeError)r;   s    r   r0   r0   k   s     
/
00s   )r   r4   typingstarlette.datastructuresr   r   starlette.typesr   r   r   r   r	   r   r!   NoReturnr0   r*   r   r   <module>rO      sE     	  < B B- - O% O%d17 1v 1r   