o
    96d                     @   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dedejf deejddf fd	d
ZejejedZeedZe ZW d   n1 siw   Y  G dd de
ZdddZG dd dejZ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 |  d S |  w )N)z	127.0.0.1r   poll_intervalg{Gz?)targetkwargsT)socketserver	TCPServer	threadingThreadserve_foreverdaemonstartshutdown)r   httpdthread r   yC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\h11/tests/test_against_stdlib_http.pysocket_server   s   
r   zdata/test-filerbc                   @   s   e Zd Zdedef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   c                  C   s6  t t} tt| jl}ttj}|	|
tjdddgd |	|
t  t }	 | }t| |tju rG||d q0t|tju rU|jdksUJ t|tju ra||j7 }t|tju rinq1t|tksrJ W d    n1 s|w   Y  W d    d S W d    d S 1 sw   Y  d S )NGETz/foo)Host	localhostmethodr   headersT
      )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(   s<   


"rE   c                   @   s   e Zd ZdddZdS )H11RequestHandlerr	   Nc              	   C   s  t | jy}ttj}d }	 | }|tju r!||d qt	|tj
u r*|}t	|tju r2nq|d us9J t|jd|jddd |jD d}||tjdg d ||tj|dd	 ||t  W d    d S 1 sw   Y  d S )
NTr*   asciic                 S   s"   i | ]\}}| d | d qS )rG   )decode).0namevaluer   r   r   
<dictcomp>]   s    z,H11RequestHandler.handle.<locals>.<dictcomp>r'   r+   )r=   r)   )r?   )r   requestr/   r0   ZSERVERr6   r8   r9   r:   r;   r3   r4   jsondumpsr(   rH   r   r)   r1   r2   r<   r>   encode)r   rB   rC   rM   rD   infor   r   r   handleI   s4   



"zH11RequestHandler.handler	   N)r    r!   r"   rR   r   r   r   r   rF   H   s    rF   c               	   C   s   t t5} | j\}}d||}tt|}| dksJ | }W d    n1 s-w   Y  W d    n1 s<w   Y  t	|
d}t| |d dksUJ |d dks]J d|d	 d
 v sgJ d S )Nzhttp://{}:{}/some-pathr+   rG   r(   r$   r   z
/some-pathurllibr)   z
user-agent)r   rF   r.   formatr   r   getcodereadrN   loadsrH   r7   )r   hostporturlfr?   rQ   r   r   r   test_h11_as_serverh   s   


r]   rS   )!rN   Zos.pathosr,   r   r   
contextlibr   r   Zhttp.serverr   typingr   r   urllib.requestr   r/   BaseRequestHandlerr   r   r   joindirname__file__r   openr\   rW   rA   r   rE   rF   r]   r   r   r   r   <module>   s0    

  