a  ze@s^ddlZgdZGdddZddZddZdd d Zd d ZddZhdjZ 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/bitninja-python-dojo/embedded/lib/python3.9/wsgiref/util.py__init__s zFileWrapper.__init__cCs6ddl}|jdtdd|j|j}|r.|StdS)NrzXFileWrapper's __getitem__ method ignores 'key' parameter. Use iterator protocol instead.) stacklevel)warningswarnDeprecationWarningr readr IndexError)r keyrdatarrr __getitem__szFileWrapper.__getitem__cCs|SNr)r rrr__iter__!szFileWrapper.__iter__cCs|j|j}|r|StdSr)r rr StopIteration)r rrrr__next__$szFileWrapper.__next__N)r)__name__ __module__ __qualname__rrrrrrrrr s  rcCs|ddvrdSdSdS)NZHTTPS)ZyesZon1httpshttp)get)environrrrr*srcCs|dd}ddlm}|dr0||d7}nR||d7}|ddkrf|dd kr|d |d7}n|dd kr|d |d7}|||d pd dd7}|S)Nwsgi.url_schemez://rquote HTTP_HOST SERVER_NAMEr# SERVER_PORT443:80 SCRIPT_NAME/latin1)encoding) urllib.parser)r%)r&urlr)rrrr2s       rTcCspt|}ddlm}||ddddd}|dsF||d d7}n||7}|rl|d rl|d |d 7}|S) Nrr( PATH_INFOz/;=,r2)safer3r0Z QUERY_STRING?)rr4r)r%)r&Z include_queryr5r) path_inforrrrFs  rcCs|dd}|sdS|d}dd|ddD|dd<|d}|d=|dd}t|d|}|dr~|dd}|s|ds|d7}||d<d||d<|d krd}|S) Nr6r7r1cSsg|]}|r|dkr|qS).r).0prrr ez#shift_path_info..r9r0r<)r%split posixpathnormpathendswithjoin)r&r; path_partsnameZ script_namerrrrSs$     rcCs|dd|dd|d|d|ddd|vr\d |vr\|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_METHODGETr0r6r7r1z wsgi.version)r9rz wsgi.run_oncerzwsgi.multithreadzwsgi.multiprocess)StringIOBytesIOz wsgi.inputz wsgi.errorsr'r$r,r/r#r-) setdefaultiorJrKr)r&rJrKrrrr|s&           r>teZtrailersz keep-alivezproxy-authorization connectionzproxy-authenticateZupgradeztransfer-encodingcCs t|Sr)_hoppishlower)Z header_namerrr is_hop_by_hopsrR)T) rC__all__rrrrrr __contains__rPrRrrrrs )(