a
    þ
þdM  ã                   @   sÀ   d dl mZmZ d dlmZmZmZmZmZ d dl	m
Z
 dgZdd„ Zdd„ Z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feeefeeefeeeeedœiZdS )é   )ÚDataÚEndOfMessage)ÚCLIENTÚIDLEÚ	SEND_BODYÚSEND_RESPONSEÚSERVER©ÚLocalProtocolErrorÚWRITERSc                 C   sb   | j }|D ]"\}}}|dkr
|d||f ƒ q
|D ]"\}}}|dkr2|d||f ƒ q2|dƒ d S )Ns   hosts   %s: %s
ó   
)Z_full_items)ÚheadersÚwriteÚ	raw_itemsZraw_nameÚnameÚvalue© r   úU/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/h11/_writers.pyÚwrite_headers   s    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   )Úrequestr   r   r   r   Úwrite_request   s    
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   )Úresponser   Zstatus_bytesr   r   r   Úwrite_any_response'   s
    
	r"   c                   @   s   e Zd Zdd„ ZdS )Ú
BodyWriterc                 C   sD   t |ƒtu r|  |j|¡ n$t |ƒtu r8|  |j|¡ nds@J ‚d S )NF)Útyper   Ú	send_dataÚdatar   Úsend_eomr   )ÚselfÚeventr   r   r   r   Ú__call__8   s
    zBodyWriter.__call__N)Ú__name__Ú
__module__Ú__qualname__r*   r   r   r   r   r#   7   s   r#   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚContentLengthWriterc                 C   s
   || _ d S ©N)Ú_length)r(   Úlengthr   r   r   Ú__init__H   s    zContentLengthWriter.__init__c                 C   s0   |  j t|ƒ8  _ | j dk r$tdƒ‚||ƒ d S )Né    z)Too much data for declared Content-Length)r0   Úlenr
   ©r(   r&   r   r   r   r   r%   K   s    
zContentLengthWriter.send_datac                 C   s"   | j dkrtdƒ‚|rtdƒ‚d S )Nr3   z+Too little data for declared Content-Lengthz%Content-Length and trailers don't mix)r0   r
   ©r(   r   r   r   r   r   r'   Q   s    
zContentLengthWriter.send_eomN)r+   r,   r-   r2   r%   r'   r   r   r   r   r.   G   s   r.   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚChunkedWriterc                 C   s,   |sd S |dt |ƒ ƒ ||ƒ |dƒ d S )Ns   %x
r   )r4   r5   r   r   r   r%   Y   s
    zChunkedWriter.send_datac                 C   s   |dƒ t ||ƒ d S )Ns   0
)r   r6   r   r   r   r'   b   s    zChunkedWriter.send_eomN©r+   r,   r-   r%   r'   r   r   r   r   r7   X   s   	r7   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚHttp10Writerc                 C   s   ||ƒ d S r/   r   r5   r   r   r   r%   h   s    zHttp10Writer.send_datac                 C   s   |rt dƒ‚d S )Nz&can't send trailers to HTTP/1.0 clientr	   r6   r   r   r   r'   k   s    zHttp10Writer.send_eomNr8   r   r   r   r   r9   g   s   r9   )Úchunkedzcontent-lengthzhttp/1.0N)Z_eventsr   r   Ú_stater   r   r   r   r   Z_utilr
   Ú__all__r   r   r"   r#   r.   r7   r9   r   r   r   r   r   Ú<module>
   s&   ýü