a
    
dt                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dl	m
Z
 d dlmZ d dlZedd ZejejedZeedZe ZW d   n1 s0    Y  G d	d
 d
e
Zdd ZG dd dejZdd ZdS )    N)closingcontextmanager)SimpleHTTPRequestHandler)urlopenc                 c   sP   t d| }tj|jddid}d|_z|  |V  W |  n
|  0 d S )N)z	127.0.0.1r   poll_intervalg{Gz?)targetkwargsT)socketserver	TCPServer	threadingThreadserve_foreverdaemonstartshutdown)handlerhttpdthread r   k/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/h11/tests/test_against_stdlib_http.pysocket_server   s    
r   zdata/test-filerbc                   @   s   e Zd Zdd ZdS )SingleMindedRequestHandlerc                 C   s   t S )N)test_file_path)selfpathr   r   r   translate_path!   s    z)SingleMindedRequestHandler.translate_pathN)__name__
__module____qualname__r   r   r   r   r   r       s   r   c                  C   s&  t t} tt| j}ttj}|	|
tjdddgd |	|
t  t }| }t| |tju r||d qbt|tju r|jdksJ t|tju r||j7 }t|tju rbqqbt|tksJ W d    n1 s0    Y  W d    n1 s0    Y  d S )NGETz/foo)Host	localhostmethodr   headers
      )r   r   r   socketcreate_connectionserver_addressh11
ConnectionZCLIENTsendallsendRequestEndOfMessage	bytearray
next_eventprint	NEED_DATAreceive_datarecvtypeResponsestatus_codeDatadatabytestest_file_data)r   scr;   eventr   r   r   test_h11_as_client%   s0    

rA   c                   @   s   e Zd Zdd ZdS )H11RequestHandlerc              	   C   s   t | j}ttj}d }| }|tju r@||d qt	|tj
u rR|}t	|tju rqdqt|jd|jddd |jD d}||tjdg d ||tj|dd ||t  W d    n1 s0    Y  d S )	Nr&   asciic                 S   s"   i | ]\}}| d | d qS )rC   )decode).0namevaluer   r   r   
<dictcomp>Y   s   z,H11RequestHandler.handle.<locals>.<dictcomp>r#   r'   )r9   r%   )r;   )r   requestr+   r,   ZSERVERr2   r4   r5   r6   r7   r/   r0   jsondumpsr$   rD   r   r%   r-   r.   r8   r:   encode)r   r>   r?   rI   r@   infor   r   r   handleF   s,    



zH11RequestHandler.handleN)r   r   r   rN   r   r   r   r   rB   E   s   rB   c               	   C   s   t tj} | j\}}d||}tt|(}| dks>J | }W d    n1 sZ0    Y  W d    n1 sx0    Y  t	|
d}t| |d dksJ |d dksJ d|d	 d
 v sJ d S )Nzhttp://{}:{}/some-pathr'   rC   r$   r    r   z
/some-pathurllibr%   z
user-agent)r   rB   r*   formatr   r   getcodereadrJ   loadsrD   r3   )r   hostporturlfr;   rM   r   r   r   test_h11_as_serverd   s    

DrX   )rJ   os.pathosr(   r	   r   
contextlibr   r   Zhttp.serverr   urllib.requestr   r+   r   r   joindirname__file__r   openrW   rR   r=   r   rA   BaseRequestHandlerrB   rX   r   r   r   r   <module>   s"   
& 