B ‡ f ã @ sx d Z ddlZddddddgZG d d„ dƒZd d„ Zdd„ Zdd d„Zdd„ Zdd„ Zdddddddddœj Z dd„ ZdS )z$Miscellaneous WSGI-related Utilitiesé NÚFileWrapperÚguess_schemeÚapplication_uriÚrequest_uriÚshift_path_infoÚsetup_testing_defaultsc @ s2 e Zd ZdZddd„Zdd„ Zdd„ Zd d „ ZdS ) r z1Wrapper to convert file-like objects to iterablesé c C s" || _ || _t|dƒr|j| _d S )NÚclose)ÚfilelikeÚblksizeÚhasattrr )Úselfr r © r ú1/opt/alt/python37/lib64/python3.7/wsgiref/util.pyÚ__init__ s zFileWrapper.__init__c C s | j | j¡}|r|S t‚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¡}|r|S t‚d 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 | d¡dkrdS dS dS )zMReturn a guess for whether 'wsgi.url_scheme' should be 'http' or 'https' ZHTTPS)ZyesZonÚ1ÚhttpsÚhttpN)Úget)Úenvironr r r r # s c C s | d d }ddl m} | d¡r0|| d 7 }nR|| d 7 }| d dkrf| d d kr‚|d | d 7 }n| d dkr‚|d | d 7 }||| d¡p’d dd7 }|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ú/Úlatin1)Úencoding)Úurllib.parser" r )r! Úurlr" r r r r + s Tc C sp t | ƒ}ddlm} || dd¡ddd}| d¡sF||d d … 7 }n||7 }|rl| d¡rl|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…<