ðÕ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é NÚFileWrapperÚguess_schemeÚapplication_uriÚrequest_uriÚshift_path_infoÚsetup_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)NÚclose)ÚfilelikeÚblksizeÚhasattrr )Ú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 ÚkeyÚdatar
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'
ZHTTPSÚyesÚonÚ1ÚhttpsÚhttpN)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_HOSTÚSERVER_NAMEr ÚSERVER_PORTÚ443ú:Ú80ÚSCRIPT_NAMEú/ÚencodingÚlatin1)Ú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