o
    Dh                     @   sJ  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Zzd dl	m
Z
 W n ey3   d dlm
Z
 Y nw zd dlZW n eyG   d dlZY nw zd dlmZ W n ey_   d dlmZ Y nw edd ZejejedZeedZe ZW d   n1 sw   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)urlopen)SimpleHTTPRequestHandlerc                 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)handlerhttpdthread r   ]/var/www/html/env_mimamsha/lib/python3.10/site-packages/h11/tests/test_against_stdlib_http.pysocket_server   s   
r   zdata/test-filerbc                   @      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   ,       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
Connection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_client1   s<   


"rD   c                   @   r   )H11RequestHandlerc              	   C   s  t | js}ttj}d }	 | }|tju r!||d qt	|tj
u r*|}t	|tju r2nq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 s{w   Y  d S )
NTr(   asciic                 S   s"   i | ]\}}| d | d qS )rF   )decode).0namevaluer   r   r   
<dictcomp>e   s    z,H11RequestHandler.handle.<locals>.<dictcomp>r%   r)   )r<   r'   )r>   )r   requestr-   r.   SERVERr5   r7   r8   r9   r:   r2   r3   jsondumpsr&   rG   r   r'   r0   r1   r;   r=   encode)r   rA   rB   rL   rC   infor   r   r   handleR   s2   



"zH11RequestHandler.handleN)r   r   r    rR   r   r   r   r   rE   Q   r!   rE   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)   rF   r&   r"   r   z
/some-pathurllibr'   z
user-agent)r   rE   r,   formatr   r   getcodereadrN   loadsrG   r6   )r   hostporturlfr>   rQ   r   r   r   test_h11_as_serverp   s   


r\   )!rN   os.pathosr*   r   
contextlibr   r   r-   urllib.requestr   ImportErrorurllib2r	   SocketServerhttp.serverr   SimpleHTTPServerr   r   joindirname__file__r   openr[   rV   r@   r   rD   BaseRequestHandlerrE   r\   r   r   r   r   <module>   s>    

 