1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
U
M±d›ã    @sddlZddlZddlZddlZddlZddlmZmZddl    m
Z
ddl m Z m Z ddlmZddlZee dejfe ejddfdœdd    „ƒZej ej e¡d
¡Zeed ƒZe ¡ZW5QRXGd d „d e
ƒZddœdd„ZGdd„dejƒZddœdd„Z dS)éN)ÚclosingÚcontextmanager)ÚSimpleHTTPRequestHandler)ÚCallableÚ    Generator)Úurlopen.)ÚhandlerÚreturnccsHt d|¡}tj|jddid}d|_z| ¡|VW5| ¡XdS)N)z    127.0.0.1rÚ poll_intervalg{®Gáz„?)ÚtargetÚkwargsT)Ú socketserverÚ    TCPServerÚ    threadingÚThreadÚ serve_foreverÚdaemonÚshutdownÚstart)rÚhttpdÚthread©rúYd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\h11/tests/test_against_stdlib_http.pyÚ socket_servers ÿ
rzdata/test-fileÚrbc@seZdZeedœdd„ZdS)ÚSingleMindedRequestHandler)Úpathr    cCstS)N)Útest_file_path)ÚselfrrrrÚtranslate_path$sz)SingleMindedRequestHandler.translate_pathN)Ú__name__Ú
__module__Ú __qualname__Ústrrrrrrr#sr©r    c Csúttƒè}tt |j¡ƒÌ}t tj¡}|     | 
tj dddgd¡¡|     | 
t  ¡¡¡t ƒ}| ¡}t|ƒ|tjkrŒ| | d¡¡q`t|ƒtjkr¨|jdks¨t‚t|ƒtjkrÀ||j7}t|ƒtj kr`qÒq`t|ƒtksât‚W5QRXW5QRXdS)NÚGETz/foo)ÚHostÚ    localhost©Úmethodr Úheadersé
éÈ)rrrÚsocketÚcreate_connectionÚserver_addressÚh11Ú
ConnectionZCLIENTÚsendallÚsendÚRequestÚ EndOfMessageÚ    bytearrayÚ
next_eventÚprintÚ    NEED_DATAÚ receive_dataÚrecvÚtypeÚResponseÚ status_codeÚAssertionErrorÚDataÚdataÚbytesÚtest_file_data)rÚsÚcrAÚeventrrrÚtest_h11_as_client(s4
 ÿÿÿ
 
rGc@seZdZddœdd„ZdS)ÚH11RequestHandlerNr$c    Csøt|jƒä}t tj¡}d}| ¡}|tjkr@| | d¡¡qt    |ƒtj
krR|}t    |ƒtj krqdq|dk    spt ‚t  |j d¡|j d¡dd„|jDƒdœ¡}| | tjdgd¡¡| | tj| d¡d¡¡| | t  ¡¡¡W5QRXdS)    Nr+ÚasciicSs"i|]\}}| d¡| d¡“qS)rI)Údecode)Ú.0ÚnameÚvaluerrrÚ
<dictcomp>]sÿz,H11RequestHandler.handle.<locals>.<dictcomp>r(r,)r>r*)rA)rÚrequestr0r1ZSERVERr7r9r:r;r<r4r5r?ÚjsonÚdumpsr)rJr r*r2r3r=r@Úencode)rrDrErOrFÚinforrrÚhandleIs.  
 
 
þýÿ
zH11RequestHandler.handle)r r!r"rTrrrrrHHsrHc
CsªttƒL}|j\}}d ||¡}tt|ƒƒ}| ¡dks>t‚| ¡}W5QRXW5QRXt     
|  d¡¡}t |ƒ|ddks‚t‚|ddks’t‚d|d    d
ks¦t‚dS) Nzhttp://{}:{}/some-pathr,rIr)r%r z
/some-pathÚurllibr*z
user-agent) rrHr/ÚformatrrÚgetcoder?ÚreadrPÚloadsrJr8)rÚhostÚportÚurlÚfrArSrrrÚtest_h11_as_serverhs
 
 r^)!rPÚos.pathÚosr-r rÚ
contextlibrrZ http.serverrÚtypingrrÚurllib.requestrr0ÚBaseRequestHandlerrrrÚjoinÚdirnameÚ__file__rÚopenr]rXrCrrGrHr^rrrrÚ<module>s(   þ