B ޭɚ @stddlZddddddgZGdddZd dZd dZdd dZd dZddZdddddddddjZ ddZ dS)N FileWrapper guess_schemeapplication_uri request_urishift_path_infosetup_testing_defaultsc@s.eZdZd ddZddZddZdd Zd S) r cCs"||_||_t|dr|j|_dS)Nclose)filelikeblksizehasattrr )selfr r r//opt/alt/python37/lib/python3.7/wsgiref/util.py__init__s zFileWrapper.__init__cCs|j|j}|r|StdS)N)r readr IndexError)r keydatarrr __getitem__szFileWrapper.__getitem__cCs|S)Nr)r rrr__iter__szFileWrapper.__iter__cCs|j|j}|r|StdS)N)r rr StopIteration)r rrrr__next__szFileWrapper.__next__N)r)__name__ __module__ __qualname__rrrrrrrrr s cCs|ddkrdSdSdS)NZHTTPS)ZyesZon1httpshttp)get)environrrrr#scCs|dd}ddlm}|dr0||d7}nR||d7}|ddkrf|dd kr|d |d7}n|dd kr|d |d7}|||d pd dd7}|S)Nzwsgi.url_schemez://r)quote HTTP_HOST SERVER_NAMEr SERVER_PORT443:80 SCRIPT_NAME/latin1)encoding) urllib.parser!r)r urlr!rrrr+s       TcCspt|}ddlm}||ddddd}|dsF||d d7}n||7}|rl|d rl|d |d 7}|S) Nr)r! PATH_INFOz/;=,r*)Zsafer+r(Z QUERY_STRING?)rr,r!r)r Z include_queryr-r! path_inforrrr?s  cCs|dd}|sdS|d}dd|ddD|dd<|d}|d=|dd}t|d|}|dr~|dd}|s|ds|d7}||d<d||d<|d krd}|S) Nr.r/r)cSsg|]}|r|dkr|qS).r).0prrr ^sz#shift_path_info..r0r(r3)rsplit posixpathnormpathendswithjoin)r r2 path_partsnameZ script_namerrrrLs$     cCs|dd|dd|d|d|ddd|kr\d |kr\|dd |d d |d d |dd|dd|ddddlm}m}|d||d||dt||ddkr|ddn|ddkr|dddS)Nr#z 127.0.0.1ZSERVER_PROTOCOLzHTTP/1.0r"ZREQUEST_METHODZGETr(r.r/r)z wsgi.version)r0rz wsgi.run_oncerzwsgi.multithreadzwsgi.multiprocess)StringIOBytesIOz wsgi.inputz wsgi.errorszwsgi.url_schemerr$r'rr%) setdefaultior?r@r)r r?r@rrrrus&           r0)Z connectionz keep-alivezproxy-authenticatezproxy-authorizationteZtrailersztransfer-encodingZupgradecCs t|S)N)_hoppishlower)Z header_namerrr is_hop_by_hopsrF)T) r9__all__rrrrrr __contains__rDrFrrrrs ))