3 \ã @stddlZddddddgZGdd„dƒZd d„Zd d„Zdd d„Zd d„Zdd„ZdddddddddœjZ dd„Z dS)éNÚ FileWrapperÚ guess_schemeÚapplication_uriÚ request_uriÚshift_path_infoÚsetup_testing_defaultsc@s.eZdZd dd„Zdd„Zdd„Zdd „Zd S) ré cCs"||_||_t|dƒr|j|_dS)NÚclose)ÚfilelikeÚblksizeÚhasattrr )Úselfr r ©rú$/usr/lib64/python3.6/wsgiref/util.pyÚ__init__s zFileWrapper.__init__cCs|jj|jƒ}|r|St‚dS)N)r Úreadr Ú IndexError)r ÚkeyÚdatarrrÚ __getitem__szFileWrapper.__getitem__cCs|S)Nr)r rrrÚ__iter__szFileWrapper.__iter__cCs|jj|jƒ}|r|St‚dS)N)r rr Ú StopIteration)r rrrrÚ__next__szFileWrapper.__next__N)r)Ú__name__Ú __module__Ú __qualname__rrrrrrrrr s cCs|jdƒdkrdSdSdS)NZHTTPSÚyesÚonÚ1ÚhttpsÚhttp)rrr)Úget)Úenvironrrrr#scCs |dd}ddlm}|jdƒr0||d7}nR||d7}|ddkrf|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ú/Úlatin1)Úencoding)Ú urllib.parser#r!)r"Úurlr#rrrr+s       TcCspt|ƒ}ddlm}||jddƒddd�}|jdƒsF||d d…7}n||7}|rl|jd ƒrl|d |d 7}|S) Nr)r#Ú PATH_INFOÚz/;=,r,)Zsafer-r*éZ QUERY_STRINGú?)rr.r#r!)r"Z include_queryr/r#Ú path_inforrrr?s  cCs¾|jddƒ}|sdS|jdƒ}dd„|dd …Dƒ|dd …<|d}|d=|jddƒ}tj|d|ƒ}|jdƒr~|dd …}| r˜|jdƒ r˜|d7}||d<dj|ƒ|d<|dkrºd}|S) Nr0r1r+cSsg|]}|r|dkr|‘qS)Ú.r)Ú.0Úprrrú ^sz#shift_path_info..r2r*r5éÿÿÿÿr9r9)r!ÚsplitÚ posixpathÚnormpathÚendswithÚjoin)r"r4Ú path_partsÚnameZ script_namerrrrLs$     cCsþ|jddƒ|jddƒ|jd|dƒ|jddƒd|kr\d |kr\|jdd ƒ|jd d ƒ|jd dƒ|jddƒ|jddƒ|jddƒddlm}m}|jd|ƒƒ|jd|ƒƒ|jdt|ƒƒ|ddkrâ|jddƒn|ddkrú|jddƒdS)Nr%z 127.0.0.1ZSERVER_PROTOCOLzHTTP/1.0r$ZREQUEST_METHODZGETr*r0r1r+z wsgi.versionr2rz wsgi.run_oncezwsgi.multithreadzwsgi.multiprocess)ÚStringIOÚBytesIOz wsgi.inputz wsgi.errorszwsgi.url_schemer r&r)rr')r2r)Ú setdefaultÚiorArBr)r"rArBrrrrus&           r2)Z connectionz keep-alivezproxy-authenticatezproxy-authorizationZteZtrailersztransfer-encodingZupgradecCs t|jƒƒS)N)Ú_hoppishÚlower)Z header_namerrrÚ is_hop_by_hop£srG)T) r;Ú__all__rrrrrrÚ __contains__rErGrrrrÚs ))