й¼]ã@s¿ddlZddddddgZGdd„dƒZd d„Zd d„Zd d d„Zd d„Zdd„ZddddddddddddddddijZ dd„Z dS)éNÚ FileWrapperÚ guess_schemeÚapplication_uriÚ request_uriÚshift_path_infoÚsetup_testing_defaultsc@sCeZdZddd„Zdd„Zdd„Zdd „Zd S) ri cCs1||_||_t|dƒr-|j|_dS)NÚclose)ÚfilelikeÚblksizeÚhasattrr)Úselfr r ©r ú)/opt/alt/python35/lib64/python3.5/util.pyÚ__init__s  zFileWrapper.__init__cCs)|jj|jƒ}|r|St‚dS)N)r Úreadr Ú IndexError)r ÚkeyÚdatar r rÚ __getitem__szFileWrapper.__getitem__cCs|S)Nr )r r r rÚ__iter__szFileWrapper.__iter__cCs)|jj|jƒ}|r|St‚dS)N)r rr Ú StopIteration)r rr r rÚ__next__szFileWrapper.__next__N)Ú__name__Ú __module__Ú __qualname__rrrrr r r rr s   cCs!|jdƒdkrdSdSdS)NZHTTPSÚyesÚonÚ1ÚhttpsÚhttp)rrr)Úget)Úenvironr r rr#scCsÌ|dd}ddlm}|jdƒr>||d7}ne||d7}|ddkr�|dd kr£|d |d7}n"|dd kr£|d |d7}|||jd ƒp»d ddƒ7}|S)Nzwsgi.url_schemez://r)ÚquoteÚ HTTP_HOSTÚ SERVER_NAMErÚ SERVER_PORTÚ443ú:Ú80Ú SCRIPT_NAMEú/ÚencodingÚlatin1)Ú urllib.parser"r )r!Úurlr"r r rr+s%TcCs›t|ƒ}ddlm}||jddƒddddƒ}|jd ƒsf||d d…7}n ||7}|r—|jd ƒr—|d |d 7}|S) Nr)r"Ú PATH_INFOÚZsafez/;=,r+r,r)éZ QUERY_STRINGú?)rr-r"r )r!Z include_queryr.r"Ú path_infor r rr?s $ cCsÿ|jddƒ}|sdS|jdƒ}dd„|dd …Dƒ|dd …<|d}|d=|jddƒ}tj|d|ƒ}|jdƒr«|dd …}| rÌ|jdƒ rÌ|d7}||d^s z#shift_path_info..r1r)r4éÿÿÿÿr8r8)r ÚsplitÚ posixpathÚnormpathÚendswithÚjoin)r!r3Ú path_partsÚnameZ script_namer r rrLs$ '    cCsU|jddƒ|jddƒ|jd|dƒ|jddƒd|kr|d |kr||jdd ƒ|jd d ƒ|jd dƒ|jddƒ|jddƒ|jddƒddlm}m}|jd|ƒƒ|jd|ƒƒ|jdt|ƒƒ|ddkr1|jddƒn |ddkrQ|jddƒdS)Nr$z 127.0.0.1ZSERVER_PROTOCOLzHTTP/1.0r#ZREQUEST_METHODÚGETr)r/r0r*z wsgi.versionr1rz wsgi.run_oncezwsgi.multithreadzwsgi.multiprocess)ÚStringIOÚBytesIOz wsgi.inputz wsgi.errorszwsgi.url_schemerr%r(rr&)r1r)Ú setdefaultÚiorArBr)r!rArBr r rrus& Ú connectionr1z keep-alivezproxy-authenticatezproxy-authorizationÚteZtrailersztransfer-encodingZupgradecCst|jƒƒS)N)Ú_hoppishÚlower)Z header_namer r rÚ is_hop_by_hop£srI) r:Ú__all__rrrrrrÚ __contains__rGrIr r r rÚs      ) )