Yf @ s d Z d d l Z d d d d d d g Z Gd d d Z d
d Z d d Z d d
d Z d d Z d d Z d d d d d d d d d d d d d d d d i j Z
d d Z d S)z$Miscellaneous WSGI-related Utilities NFileWrapperguess_schemeapplication_urirequest_urishift_path_infosetup_testing_defaultsc @ sI e Z d Z d Z d d d Z d d Z d d Z d d
Z d S)r z1Wrapper to convert file-like objects to iterablesi c C s1 | | _ | | _ t | d r- | j | _ d S)Nclose)filelikeblksizehasattrr )selfr r
r
1/opt/alt/python35/lib64/python3.5/wsgiref/util.py__init__ s zFileWrapper.__init__c C s) | j j | j } | r | St d 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 | j } | r | St d S)N)r r r
StopIteration)r r r
r
r __next__ s zFileWrapper.__next__N)__name__
__module____qualname____doc__r r r r r
r
r
r r s
c C s! | j d d k r d Sd Sd S) zMReturn a guess for whether 'wsgi.url_scheme' should be 'http' or 'https'
ZHTTPSyeson1httpshttpN)r r r )get)environr
r
r r # s c C s | d d } d d l m } | j d r> | | d 7} ne | | d 7} | d d k r | d d k r | d
| d 7} n" | d d k r | d
| d 7} | | | j d p d
d d 7} | 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/encodinglatin1)urllib.parser# r! )r" urlr# r
r
r r + s %Tc C s t | } d d l m } | | j d d d d d d } | j d sf | | d
d 7} n
| | 7} | r | j d r | d
| d 7} | S)zBReturn the full request URI, optionally including the query stringr )r# PATH_INFO Zsafez/;=,r, r- r* NZQUERY_STRING?)r r. r# r! )r" Z
include_queryr/ r# path_infor
r
r r ? s $
c C s | j d d } | s d S| j d } d d | d d
D | d d <| d } | d =| j d d } t j | d | } | j d r | d d } | r | j d r | d 7} | | d