U
    ÷Ê	fÙ  ã                   @   s   U d dl mZmZmZmZmZmZm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mZmZmZmZ ddlmZmZ dgZeegef Zeedd	œd
d„Zeeddœdd„Zeeef eddœdd„ZG dd„ dƒZ G dd„ de ƒZ!G dd„ de ƒZ"G dd„ de ƒZ#eeeee ee f ee f eee$ee  f eeeef egdf eeegdf f f Z%eefeeefeeefeee"e!e#dœiZ&e%e'd< dS )é    )ÚAnyÚCallableÚDictÚListÚTupleÚTypeÚUnioné   )ÚDataÚEndOfMessageÚEventÚInformationalResponseÚRequestÚResponse)ÚHeaders)ÚCLIENTÚIDLEÚ	SEND_BODYÚSEND_RESPONSEÚSERVER)ÚLocalProtocolErrorÚSentinelÚWRITERSN©ÚheadersÚwriteÚreturnc                 C   sb   | j }|D ]"\}}}|dkr
|d||f ƒ q
|D ]"\}}}|dkr2|d||f ƒ q2|dƒ d S )Ns   hosts   %s: %s
ó   
)Ú_full_items)r   r   Ú	raw_itemsÚraw_nameÚnameÚvalue© r#   úO/var/www/html/apigroqsegura/apigroq/lib/python3.8/site-packages/h11/_writers.pyÚwrite_headers   s    r%   )Úrequestr   r   c                 C   s6   | j dkrtdƒ‚|d| j| jf ƒ t| j|ƒ d S )Nó   1.1úI only send HTTP/1.1s   %s %s HTTP/1.1
)Úhttp_versionr   ÚmethodÚtargetr%   r   )r&   r   r#   r#   r$   Úwrite_request$   s    
r,   )Úresponser   r   c                 C   sD   | j dkrtdƒ‚t| jƒ d¡}|d|| jf ƒ t| j|ƒ d S )Nr'   r(   Úasciis   HTTP/1.1 %s %s
)r)   r   ÚstrÚstatus_codeÚencodeÚreasonr%   r   )r-   r   Zstatus_bytesr#   r#   r$   Úwrite_any_response,   s
    
	r3   c                   @   sB   e Zd Zeeddœdd„Zeeddœdd„Zeeddœd	d
„Z	dS )Ú
BodyWriterN)Úeventr   r   c                 C   sD   t |ƒtkr|  |j|¡ n$t |ƒtkr8|  |j|¡ nds@t‚d S )NF)Útyper
   Ú	send_dataÚdatar   Úsend_eomr   ÚAssertionError)Úselfr5   r   r#   r#   r$   Ú__call__?   s
    zBodyWriter.__call__©r8   r   r   c                 C   s   d S ©Nr#   ©r;   r8   r   r#   r#   r$   r7   G   s    zBodyWriter.send_datar   c                 C   s   d S r>   r#   ©r;   r   r   r#   r#   r$   r9   J   s    zBodyWriter.send_eom)
Ú__name__Ú
__module__Ú__qualname__r   ÚWriterr<   Úbytesr7   r   r9   r#   r#   r#   r$   r4   >   s   r4   c                   @   s@   e Zd Zeddœdd„Zeeddœdd„Zeeddœd	d
„Z	dS )ÚContentLengthWriterN)Úlengthr   c                 C   s
   || _ d S r>   )Ú_length)r;   rG   r#   r#   r$   Ú__init__U   s    zContentLengthWriter.__init__r=   c                 C   s0   |  j t|ƒ8  _ | j dk r$tdƒ‚||ƒ d S )Nr   z)Too much data for declared Content-Length)rH   Úlenr   r?   r#   r#   r$   r7   X   s    
zContentLengthWriter.send_datar   c                 C   s"   | j dkrtdƒ‚|rtdƒ‚d S )Nr   z+Too little data for declared Content-Lengthz%Content-Length and trailers don't mix)rH   r   r@   r#   r#   r$   r9   ^   s    
zContentLengthWriter.send_eom)
rA   rB   rC   ÚintrI   rE   rD   r7   r   r9   r#   r#   r#   r$   rF   T   s   rF   c                   @   s0   e Zd Zeeddœdd„Zeeddœdd„ZdS )ÚChunkedWriterNr=   c                 C   s,   |sd S |dt |ƒ ƒ ||ƒ |dƒ d S )Ns   %x
r   )rJ   r?   r#   r#   r$   r7   f   s
    zChunkedWriter.send_datar   c                 C   s   |dƒ t ||ƒ d S )Ns   0
)r%   r@   r#   r#   r$   r9   o   s    zChunkedWriter.send_eom©rA   rB   rC   rE   rD   r7   r   r9   r#   r#   r#   r$   rL   e   s   	rL   c                   @   s0   e Zd Zeeddœdd„Zeeddœdd„ZdS )ÚHttp10WriterNr=   c                 C   s   ||ƒ d S r>   r#   r?   r#   r#   r$   r7   u   s    zHttp10Writer.send_datar   c                 C   s   |rt dƒ‚d S )Nz&can't send trailers to HTTP/1.0 client)r   r@   r#   r#   r$   r9   x   s    zHttp10Writer.send_eomrM   r#   r#   r#   r$   rN   t   s   rN   )Úchunkedzcontent-lengthzhttp/1.0)(Útypingr   r   r   r   r   r   r   Ú_eventsr
   r   r   r   r   r   Ú_headersr   Ú_stater   r   r   r   r   Ú_utilr   r   Ú__all__rE   rD   r%   r,   r3   r4   rF   rL   rN   r/   ÚWritersTyper   Ú__annotations__r#   r#   r#   r$   Ú<module>
   sN    $ 	
 þþÿÿÿ
   ýü