a
    Zg                     @   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mZ d dlmZ d dlZeedejf eejddf d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ddZG dd dejZddddZ dS )    N)closingcontextmanager)SimpleHTTPRequestHandler)Callable	Generator)urlopen.)handlerreturnc                 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)r   httpdthread r   p/var/www/html/cobodadashboardai.evdpl.com/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eedddZdS )SingleMindedRequestHandler)pathr	   c                 C   s   t S )N)test_file_path)selfr   r   r   r   translate_path$   s    z)SingleMindedRequestHandler.translate_pathN)__name__
__module____qualname__strr   r   r   r   r   r   #   s   r   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    

rF   c                   @   s   e Zd ZddddZdS )H11RequestHandlerNr$   c              	   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|d uspJ 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 )rH   )decode).0namevaluer   r   r   
<dictcomp>]   s   z,H11RequestHandler.handle.<locals>.<dictcomp>r(   r,   )r>   r*   )r@   )r   requestr0   r1   ZSERVERr7   r9   r:   r;   r<   r4   r5   jsondumpsr)   rI   r   r*   r2   r3   r=   r?   encode)r   rC   rD   rN   rE   infor   r   r   handleI   s.    



zH11RequestHandler.handle)r    r!   r"   rS   r   r   r   r   rG   H   s   rG   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,   rH   r)   r%   r   z
/some-pathurllibr*   z
user-agent)r   rG   r/   formatr   r   getcodereadrO   loadsrI   r8   )r   hostporturlfr@   rR   r   r   r   test_h11_as_serverh   s    

Dr]   )!rO   os.pathosr-   r   r   
contextlibr   r   Zhttp.serverr   typingr   r   urllib.requestr   r0   BaseRequestHandlerr   r   r   joindirname__file__r   openr\   rW   rB   r   rF   rG   r]   r   r   r   r   <module>   s(   &  