B ޭɚ @ sx d Z ddlZddddddgZG d d dZd d Zdd Zdd dZdd Zdd Zdddddddddj Z dd ZdS )z$Miscellaneous WSGI-related Utilities NFileWrapperguess_schemeapplication_urirequest_urishift_path_infosetup_testing_defaultsc @ s2 e Zd ZdZdddZdd Zdd Zd d ZdS ) r z1Wrapper to convert file-like objects to iterables c C s" || _ || _t|dr|j| _d S )Nclose)filelikeblksizehasattrr )selfr r r 1/opt/alt/python37/lib64/python3.7/wsgiref/util.py__init__ s zFileWrapper.__init__c C s | j | j}|r|S td S )N)r readr IndexError)r keydatar r r __getitem__ s zFileWrapper.__getitem__c C s | S )Nr )r r r r __iter__ s zFileWrapper.__iter__c C s | j | j}|r|S td S )N)r r r StopIteration)r r r r r __next__ s zFileWrapper.__next__N)r )__name__ __module____qualname____doc__r r r r r r r r r s c C s | ddkrdS dS dS )zMReturn a guess for whether 'wsgi.url_scheme' should be 'http' or 'https' ZHTTPS)ZyesZon1httpshttpN)get)environr r r r # s c C s | d d }ddl m} | dr0|| d 7 }nR|| d 7 }| d dkrf| d d kr|d | d 7 }n| d dkr|d | d 7 }||| dpd dd7 }|S )z@Return the application's base URI (no PATH_INFO or QUERY_STRING)zwsgi.url_schemez://r )quote HTTP_HOSTSERVER_NAMEr SERVER_PORT443:80SCRIPT_NAME/latin1)encoding)urllib.parser" r )r! urlr" r r r r + s Tc C sp t | }ddlm} || ddddd}| dsF||d d 7 }n||7 }|rl| drl|d| d 7 }|S ) zBReturn the full request URI, optionally including the query stringr )r" PATH_INFO z/;=,r+ )Zsafer, r) NZQUERY_STRING?)r r- r" r )r! Z include_queryr. r" path_infor r r r ? s c C s | dd}|sdS |d}dd |dd D |dd<