B 0‘cã @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ú1/opt/alt/python37/lib64/python3.7/wsgiref/util.pyÚ__init__s zFileWrapper.__init__cCs|j |j¡}|r|St‚dS)N)r Úreadr Ú IndexError)r ÚkeyÚdatarrrÚ __getitem__szFileWrapper.__getitem__cCs|S)Nr)r rrrÚ__iter__szFileWrapper.__iter__cCs|j |j¡}|r|St‚dS)N)r rr Ú StopIteration)r rrrrÚ__next__szFileWrapper.__next__N)r)Ú__name__Ú __module__Ú __qualname__rrrrrrrrr s cCs| d¡dkrdSdSdS)NZHTTPS)ZyesZonÚ1ÚhttpsÚhttp)Úget)Úenvironrrrr#scCs |dd}ddlm}| d¡r0||d7}nR||d7}|ddkrf|dd kr‚|d |d7}n|dd kr‚|d |d7}||| d ¡p’d dd7}|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}|| dd¡ddd}| d¡sF||d d…7}n||7}|rl| d ¡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º| dd¡}|sdS| d¡}dd„|dd…Dƒ|dd…<|d}|d=| dd¡}t |d|¡}| d¡r~|dd…}|s”| d¡s”|d7}||d<d |¡|d<|d kr¶d}|S) Nr.r/r)cSsg|]}|r|dkr|‘qS)Ú.r)Ú.0Úprrrú ^sz#shift_path_info..r0éÿÿÿÿr(r3)rÚsplitÚ posixpathÚnormpathÚendswithÚjoin)r r2Ú path_partsÚnameZ script_namerrrrLs$     cCsþ| dd¡| dd¡| d|d¡| dd¡d|kr\d |kr\| dd ¡| d d ¡| d d ¡| dd¡| dd¡| dd¡ddlm}m}| d|ƒ¡| d|ƒ¡| dt|ƒ¡|ddkrâ| dd¡n|ddkrú| dd¡dS)Nr#z 127.0.0.1ZSERVER_PROTOCOLzHTTP/1.0r"ZREQUEST_METHODZGETr(r.r/r)z wsgi.version)r0rz wsgi.run_oncerzwsgi.multithreadzwsgi.multiprocess)ÚStringIOÚBytesIOz wsgi.inputz wsgi.errorszwsgi.url_schemerr$r'rr%)Ú setdefaultÚior?r@r)r r?r@rrrrus&           r0)Z connectionz keep-alivezproxy-authenticatezproxy-authorizationÚteZtrailersztransfer-encodingZupgradecCs t| ¡ƒS)N)Ú_hoppishÚlower)Z header_namerrrÚ is_hop_by_hop£srF)T) r9Ú__all__rrrrrrÚ __contains__rDrFrrrrÚs ))