î
i f ã @ 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 i d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6j 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 s4 | | _ | | _ t | d ƒ r0 | j | _ n d S)NÚclose)ÚfilelikeÚblksizeÚhasattrr )Úselfr r
© r
ú1/opt/alt/python34/lib64/python3.4/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)zyesr r )Úget)Úenvironr
r
r r # s c C sÒ | d d } d d l m } | j d ƒ r> | | d 7} nk | | d 7} | d d k r„ | d d k r© | d
| d 7} q© n% | d d k r© | d
| d 7} n | | | 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} n | 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 … } n | rÒ | j d ƒ rÒ | d 7} n | | d