
    bf-                        d Z ddlZddlZddlmZmZmZmZmZm	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 d
Z G d de          Z edd          Z edd          Zeeeged         f                  Zeedged         f                  Z G d de          ZdedefdZdedddefdZeZ	 ddl m!Z! e!j        Z"ese"ZdS dS # e#$ r Y dS w xY w)z"Http related parsers and protocol.    N)Any	AwaitableCallable
NamedTupleOptionalUnion)CIMultiDict   )AbstractStreamWriter)BaseProtocol)ZLibCompressor)NO_EXTENSIONS)StreamWriterHttpVersionHttpVersion10HttpVersion11c                   $    e Zd ZU eed<   eed<   dS )r   majorminorN)__name__
__module____qualname__int__annotations__     M/var/www/html/Alfredo/env/lib/python3.11/site-packages/aiohttp/http_writer.pyr   r      s"         JJJJJJJJr   r   CIMultiDict[str]c                      e Zd Z	 	 ddedej        dededdf
dZe	de
ej                 fd            Ze	defd	            Zdd
Zdej        fdededdfdZdeddfdZddddedededdfdZdeddddfdZd deddfdZddZdS )!r   Nprotocolloopon_chunk_senton_headers_sentreturnc                     || _         || _        d | _        d| _        d| _        d| _        d| _        d | _        d | _        || _	        || _
        d S )NFr   )	_protocolr!   lengthchunkedbuffer_sizeoutput_size_eof	_compress_drain_waiter_on_chunk_sent_on_headers_sent)selfr    r!   r"   r#   s        r   __init__zStreamWriter.__init__   s\     "		37!.;2Ar   c                     | j         j        S N)r&   	transportr0   s    r   r4   zStreamWriter.transport5   s    ~''r   c                     | j         S r3   )r&   r5   s    r   r    zStreamWriter.protocol9   s
    ~r   c                     d| _         d S )NT)r(   r5   s    r   enable_chunkingzStreamWriter.enable_chunking=   s    r   deflateencodingstrategyc                 2    t          ||          | _        d S )N)r:   r;   )r   r,   )r0   r:   r;   s      r   enable_compressionzStreamWriter.enable_compression@   s     (HMMMr   chunkc                     t          |          }| xj        |z  c_        | xj        |z  c_        | j        }| j        j        r||                                rt          d          |                    |           d S )Nz!Cannot write to closing transport)	lenr)   r*   r4   r&   	connected
is_closingConnectionResetErrorwrite)r0   r>   sizer4   s       r   _writezStreamWriter._writeE   s    5zzD D N	~' 	L9+<	@T@T@V@V+<&'JKKKr   Ti   )drainLIMITrG   rH   c                  K   | j         |                      |           d{V  t          |t                    r-|j        t	          |          k    r|                    d          }| j        $| j                            |           d{V }|sdS | j        Dt	          |          }| j        |k    r| j        |z
  | _        n|d| j                 }d| _        |sdS |ry| j	        r-dt	          |          z  
                    d          }||z   dz   }|                     |           | j        |k    r'|r'd| _        |                                  d{V  dS dS dS dS )zWrites chunk of data to a stream.

        write_eof() indicates end of stream.
        writer can't be used after write_eof() method being called.
        write() return drain future.
        Ncr   %x
asciis   
)r.   
isinstance
memoryviewnbytesr@   castr,   compressr'   r(   encoderF   r)   rG   )r0   r>   rG   rH   	chunk_lenchunk_len_pres         r   rD   zStreamWriter.writeN   s      *%%e,,,,,,,,,eZ(( 	(|s5zz))

3>%.11%88888888E ;"E

I{i''"kI5mm, F 		#| 8!)CJJ!6 > >w G G%-7KK%''E'#$ jjll"""""""""		# 		# ('''r   status_lineheadersr   c                    K   | j         |                      |           d{V  t          ||          }|                     |           dS )z*Write request/response status and headers.N)r/   _serialize_headersrF   )r0   rU   rV   bufs       r   write_headerszStreamWriter.write_headersy   s`        ,''000000000 !g66Cr   r   c                 >  K   | j         rd S |r"| j        |                     |           d {V  | j        ru|r | j                            |           d {V }|| j                                        z  }|r4| j        r-dt          |          z                      d          }||z   dz   }n9| j        r2|r.dt          |          z                      d          }||z   dz   }nd}|r|                     |           | 	                                 d {V  d| _         d S )NrK   rL   s   
0

s   0

T)
r+   r.   r,   rQ   flushr(   r@   rR   rF   rG   )r0   r>   rS   s      r   	write_eofzStreamWriter.write_eof   sh     9 	F 	-T(4%%e,,,,,,,,,> 	) ="n55e<<<<<<<<T^))+++E = =%E

2::7CC	!E),<<| ) )!)CJJ!6 > >w G GI%-0@@EE(E 	KKjjll			r   c                 d   K   | j         j        !| j                                          d{V  dS dS )zFlush the write buffer.

        The intended use is to write

          await w.write(data)
          await w.drain()
        N)r&   r4   _drain_helperr5   s    r   rG   zStreamWriter.drain   sG       >#/...00000000000 0/r   )NN)r$   N)r   )r   r   r   r   asyncioAbstractEventLoop_T_OnChunkSent_T_OnHeadersSentr1   propertyr   	Transportr4   r    r8   zlibZ_DEFAULT_STRATEGYstrr   r=   bytesrF   boolrD   rZ   r]   rG   r   r   r   r   r      s       
 )-,0B BB 'B &	B
 *B 
B B B B, (8G$56 ( ( ( X( ,    X    (9PN NN36N	N N N N
E d     .2)# )# )#)#&*)#:=)#	)# )# )# )#V		);			 	 	 	 U T    <	1 	1 	1 	1 	1 	1r   r   stringr$   c                 4    d| v sd| v rt          d          | S )N
zRNewline or carriage return detected in headers. Potential header injection attack.)
ValueError)rk   s    r   _safe_headerrp      s1    v~~1
 
 	
 Mr   rU   rV   c                     d |                                 D             }| dz   d                    |          z   dz   }|                    d          S )Nc              3   `   K   | ])\  }}t          |          d z   t          |          z   V  *dS )z: N)rp   ).0kvs      r   	<genexpr>z(_py_serialize_headers.<locals>.<genexpr>   s<      XX1<??T)LOO;XXXXXXr   z
z

zutf-8)itemsjoinrR   )rU   rV   headers_genlines       r   _py_serialize_headersr{      sO    XXXXXK&++k":"::ZGD;;wr   )$__doc__r`   rf   typingr   r   r   r   r   r   	multidictr	   abcr   base_protocolr   compression_utilsr   helpersr   __all__r   r   r   ri   rb   rc   r   rh   rp   r{   rX   aiohttp._http_writer_http_writer_c_serialize_headersImportErrorr   r   r   <module>r      s   ( (   H H H H H H H H H H H H H H H H ! ! ! ! ! ! % % % % % % ' ' ' ' ' ' - - - - - - " " " " " "
K    *   
 Aq!!Aq!! (E7IdO#;<=H&8%99T?%JKL M1 M1 M1 M1 M1' M1 M1 M1`      s  5G  E         + 	//////': 212 2 	 	 	DD	s   2C CC