o
    £ÇhÙ  ã                   @   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ded	ed
dfdd„Zded	ed
dfdd„Zdeeef d	ed
df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ÚWRITERSÚheadersÚwriteÚreturnNc                 C   sb   | j }|D ]\}}}|dkr|d||f ƒ q|D ]\}}}|dkr*|d||f ƒ q|dƒ d S )Ns   hosts   %s: %s
ó   
)Ú_full_items)r   r   Ú	raw_itemsÚraw_nameÚnameÚvalue© r"   ú`/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/h11/_writers.pyÚwrite_headers   s   €€r$   Úrequestc                 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+   Úresponsec                 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   Ústatus_bytesr"   r"   r#   Úwrite_any_response,   s
   
	r3   c                   @   sN   e Zd Zdededdfdd„Zdededdfdd	„Zd
ededdfdd„Z	dS )Ú
BodyWriterÚeventr   r   Nc                 C   s@   t |ƒtu r|  |j|¡ d S t |ƒtu r|  |j|¡ d S J ‚©N)Útyper
   Ú	send_dataÚdatar   Úsend_eomr   )Úselfr5   r   r"   r"   r#   Ú__call__?   s
   zBodyWriter.__call__r9   c                 C   ó   d S r6   r"   ©r;   r9   r   r"   r"   r#   r8   G   ó   zBodyWriter.send_datar   c                 C   r=   r6   r"   ©r;   r   r   r"   r"   r#   r:   J   r?   zBodyWriter.send_eom)
Ú__name__Ú
__module__Ú__qualname__r   ÚWriterr<   Úbytesr8   r   r:   r"   r"   r"   r#   r4   >   s    r4   c                   @   sJ   e Zd Zdeddfdd„Zdededdfdd	„Zd
ededdfdd„Z	dS )ÚContentLengthWriterÚlengthr   Nc                 C   s
   || _ d S r6   )Ú_length)r;   rG   r"   r"   r#   Ú__init__U   s   
zContentLengthWriter.__init__r9   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#   r8   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#   r:   ^   s
   
ÿzContentLengthWriter.send_eom)
rA   rB   rC   ÚintrI   rE   rD   r8   r   r:   r"   r"   r"   r#   rF   T   s    rF   c                   @   ó8   e Zd Zdededdfdd„Zdededdfdd	„ZdS )
ÚChunkedWriterr9   r   r   Nc                 C   s,   |sd S |dt |ƒ ƒ ||ƒ |dƒ d S )Ns   %x
r   )rJ   r>   r"   r"   r#   r8   f   s
   zChunkedWriter.send_datar   c                 C   s   |dƒ t ||ƒ d S )Ns   0
)r$   r@   r"   r"   r#   r:   o   s   zChunkedWriter.send_eom©rA   rB   rC   rE   rD   r8   r   r:   r"   r"   r"   r#   rM   e   s    	rM   c                   @   rL   )
ÚHttp10Writerr9   r   r   Nc                 C   s   ||ƒ d S r6   r"   r>   r"   r"   r#   r8   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#   r:   x   s   ÿzHttp10Writer.send_eomrN   r"   r"   r"   r#   rO   t   s    rO   )Ú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   rM   rO   r.   ÚWritersTyper   Ú__annotations__r"   r"   r"   r#   Ú<module>   sN   &	 
ÿÿ
þþÿÿÿ
ýü