
    $je"                        U d dl mZ d dlZd dlm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 dZej$                  j'                  d      Zded<   dd	Z G d
 d      Z G d d      Z G d de      ZddZddZy)    )annotationsN)NoReturn)HeadersMutableHeaders)ASGIAppMessageReceiveScopeSend)zapplication/gzipzapplication/x-gzipzapplication/zipzaudio/*z	font/woffz
font/woff2z
image/avifz	image/gifz
image/jpegz	image/pngz
image/webpztext/event-streamzvideo/*_gzip_capacity_limiterz,anyio.lowlevel.RunVar[anyio.CapacityLimiter]c                     	 t         j                         S # t        $ r/ t        j                  d      } t         j                  |        | cY S w xY w)zDReturn the capacity limiter used for worker-thread GZip compression.(   )r   getLookupErroranyioCapacityLimitersetlimiters    ]/var/www/oz-panel.ru/ozpay-pub/venv/lib/python3.12/site-packages/starlette/middleware/gzip.py_get_gzip_capacity_limiterr       sJ    %))++  ''+""7+s    5AAc                  @    e Zd Z	 	 	 ded	 	 	 	 	 	 	 	 	 	 	 ddZddZy)GZipMiddlewareexclude_content_typesc               \    || _         || _        || _        || _        t	        |      | _        y N)appminimum_sizecompresslevelthread_minimum_size_normalize_content_typesr   )selfr   r   r    r!   r   s         r   __init__zGZipMiddleware.__init__-   s1     (*#6 %=>S%T"    c                  K   |d   dk7  r| j                  |||       d {    y t        |      }d|j                  dd      v rCt        | j                   | j                  | j
                  | j                  | j                        }n,t        | j                   | j                  | j                        } ||||       d {    y 7 7 w)	Ntypehttp)scopegzipAccept-Encoding )r    r!   r   r   )	r   r   r   GZipResponderr   r    r!   r   IdentityResponder)r#   r)   receivesendheaders	responders         r   __call__zGZipMiddleware.__call__<   s     =F"((5'4000&W[[!2B77%!!"00$($<$<&*&@&@I *$((D4E4E]a]w]wxIw---! 1  	.s"   CC	B!CCCCN)i  	      r   r   r   intr    r7   r!   r7   r   tuple[str, ...]returnNoner)   r
   r/   r	   r0   r   r9   r:   )__name__
__module____qualname__DEFAULT_EXCLUDED_CONTENT_TYPESr$   r3    r%   r   r   r   ,   sd      #-U 2PUU U 	U
 !U  /U 
U.r%   r   c                  L    e Zd ZU ded<   ed	 	 	 	 	 	 	 d	dZd
dZddZddZy)r.   strcontent_encodingr   c                   || _         || _        t        |      | _        t        | _        i | _        d| _        d| _        d| _	        d| _
        y )NF)r   r   r"   r   unattached_sendr0   initial_messagestartedcontent_encoding_setcontent_type_is_excludedpartial_response)r#   r   r   r   s       r   r$   zIdentityResponder.__init__T   sO     (%=>S%T")	(*$)!(-% %r%   c                h   K   || _         | j                  ||| j                         d {    y 7 wr   )r0   r   send_with_compression)r#   r)   r/   r0   s       r   r3   zIdentityResponder.__call__e   s)     	hhugt'A'ABBBs   (202c                  K   |d   }|dk(  r|| _         t        | j                   d         }d|v | _        |d   dk(  | _        |j	                  dd	      j                  d
      d   j                         j                         }||j                  d      d   dz   h}|j                  | j                         | _
        y |dk(  rt| j                  s| j                  s| j                  rP| j                  s*d| _        | j                  | j                          d {    | j                  |       d {    y |dk(  r| j                  sd| _        |j	                  dd      }|j	                  dd      }t        |      | j                  k  r?|s=| j                  | j                          d {    | j                  |       d {    y |s| j                  |d       d {   }t!        | j                   d         }|j#                  d       ||d   k7  r+| j$                  |d<   t'        t        |            |d<   ||d<   | j                  | j                          d {    | j                  |       d {    y | j                  |d       d {   }t!        | j                   d         }|j#                  d       ||d   k7  r| j$                  |d<   |d= ||d<   | j                  | j                          d {    | j                  |       d {    y |dk(  r\|j	                  dd      }|j	                  dd      }| j                  ||       d {   |d<   | j                  |       d {    y |dk(  r=| j                  | j                          d {    | j                  |       d {    y y 7 7 7 !7 7 7 s7 ]7 D7 7 7 7 f7 ?7 (w)Nr'   zhttp.response.startr1   )rawzcontent-encodingstatus   zcontent-typer,   ;r   /z/*zhttp.response.bodyTbodyr%   	more_bodyF)rT   r+   zContent-EncodingzContent-Lengthzhttp.response.pathsend)rF   r   rH   rJ   r   	partitionstriplower
isdisjointr   rI   rG   r0   lenr   apply_compressionr   add_vary_headerrC   rB   )r#   messagemessage_typer1   
media_typemedia_typesrS   rT   s           r   rL   z'IdentityResponder.send_with_compressioni   s    v00 $+D $"6"6y"ABG(:g(ED%$+H$5$<D! ^R8BB3GJPPRXXZJ%z';';C'@'Cd'JKK0;0F0FtGaGa0b,bD)11%%)>)>$B_B_<<#ii 4 4555))G$$$11$,,DL;;vs+DK7I4y4,,,Yii 4 4555ii(((!33DE3JJ(T-A-A)-LM''(9:76?*262G2GG./03CIG,-&*GFOii 4 4555ii((( "33DD3II(T-A-A)-LM''(9:76?*262G2GG./ 01&*GFOii 4 4555ii(((11;;vs+DK7I$($:$:49$:$UUGFO))G$$$55))D00111))G$$$ 6Y 6$ 6( K 6( J 6( V$ 2$s   DO,OO,1O2A;O,-O.O,OO,$O%A?O,$O%O,=O>O,OA+O,O O,O"AO,#O$$O,?O& (O,(O()O,O*O,O,O,O,O,O,O,O, O,"O,$O,&O,(O,*O,c                  K   |S w)zApply compression on the response body.

        If more_body is False, the compression stream is finalized. Compression
        resources are only allocated once a body is actually compressed.
        r@   r#   rS   rT   s      r   rZ   z#IdentityResponder.apply_compression   s      s   N)r   r   r   r7   r   r8   r9   r:   r;   )r\   r   r9   r:   rS   bytesrT   boolr9   rc   )	r<   r=   r>   __annotations__r?   r$   r3   rL   rZ   r@   r%   r   r.   r.   Q   sK     2P&& &
  /& 
&"C@%Dr%   r.   c                  h     e Zd ZdZ	 dded	 	 	 	 	 	 	 	 	 	 	 d	 fdZed
d       ZddZddZ	 xZ
S )r-   r*   r5   )r!   r   c               T    t         |   |||       || _        || _        d | _        y )Nr   )superr$   r    r!   _compressor)r#   r   r   r    r!   r   	__class__s         r   r$   zGZipResponder.__init__   s2     	lBWX*#6 26r%   c                    | j                   Et        j                  | j                  t        j                  dt        j
                  z         | _         | j                   S )N   )ri   zlibcompressobjr    DEFLATED	MAX_WBITS)r#   s    r   
compressorzGZipResponder.compressor   sH    ##//0B0BDMMSUX\XfXfSfgDr%   c                  K   t        |      | j                  k\  r?t               }t        j                  j                  | j                  |||       d {   S | j                  ||      S 7 w)Nr   )rY   r!   r   r   	to_threadrun_sync_compress_body)r#   rS   rT   r   s       r   rZ   zGZipResponder.apply_compression   sa     t900002G11$2E2EtY`g1hhh""433 is   AA.A,A.c                    |rE| j                   j                  |      | j                   j                  t        j                        z   S | j                   j                  |      | j                   j                         z   S r   )rq   compressflushrm   Z_SYNC_FLUSHra   s      r   ru   zGZipResponder._compress_body   s[    ??++D1DOO4I4I$J[J[4\\\''-0E0E0GGGr%   )r4   r6   )r9   zzlib._Compressrb   )r<   r=   r>   rC   r?   r$   propertyrq   rZ   ru   __classcell__)rj   s   @r   r-   r-      sy     	7 $.1O77 7 	7 !7  /7 
7    
4Hr%   r-   c                    K   t        d      w)Nzsend awaitable not set)RuntimeError)r\   s    r   rE   rE      s     
/
00s   c                &    t        d | D              S )Nc              3  |   K   | ]4  }|j                  d       d   j                         j                          6 yw)rQ   r   N)rU   rV   rW   ).0content_types     r   	<genexpr>z+_normalize_content_types.<locals>.<genexpr>   s2     bL'',Q/557==?bs   :<)tuple)content_typess    r   r"   r"      s    bTabbbr%   )r9   zanyio.CapacityLimiter)r\   r   r9   r   )r   r8   r9   r8   )
__future__r   rm   typingr   anyio.lowlevelr   anyio.to_threadstarlette.datastructuresr   r   starlette.typesr   r   r	   r
   r   r?   lowlevelRunVarr   re   r   r   r.   r-   rE   r"   r@   r%   r   <module>r      s}    "     < B B"   HM~~G\G\]uGv D v	". ".J` `F"H% "HJ1cr%   