Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
contego / home / tvault / .virtenv / lib / python2.7 / site-packages / paste / request.pyc
Size: Mime:
ó
ª‹EYc	@sÒdZddlZddlmZddlmZmZyddlm	Z	m
Z
Wn'ek
r{ddlm	Z	m
Z
nXyddl
mZWn!ek
r³ddlmZnXddlZddlmZd	d
ddd
ddddg	Zd„Zd„Zd„Zd„Zeddd„Zeedddd„Zd„Zd„Zd„Zidd6dd6dd 6Z d!„Z!defd"„ƒYZ"d#„Z#e#ej$_%e&d$krÎddl'Z'e'j(ƒndS(%sÑ
This module provides helper routines with work directly on a WSGI
environment to solve common requirements.

   * get_cookies(environ)
   * parse_querystring(environ)
   * parse_formvars(environ, include_get_vars=True)
   * construct_url(environ, with_query_string=True, with_path_info=True,
                   script_name=None, path_info=None, querystring=None)
   * path_info_split(path_info)
   * path_info_pop(environ)
   * resolve_relative_url(url, environ)

iÿÿÿÿN(tparse(tquotet	parse_qsl(tSimpleCookietCookieError(t	DictMixin(tMutableMapping(t	MultiDicttget_cookiestget_cookie_dicttparse_querystringtparse_formvarst
construct_urltpath_info_splitt
path_info_poptresolve_relative_urltEnvironHeaderscCsƒ|jddƒ}d|krA|d\}}||krA|Sntƒ}y|j|ƒWntk
rnnX||f|d<|S(sµ
    Gets a cookie object (which is a dictionary-like object) from the
    request environment; caches this value in case get_cookies is
    called again for the same request.

    tHTTP_COOKIEts
paste.cookies(tgetRtloadR(tenvirontheadertcookiestcheck_header((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyR*s	
cCs²|jdƒ}|siSd|krH|d\}}||krH|Sntƒ}y|j|ƒWntk
runXi}x|D]}||j||<qƒW||f|d<|S(s#Return a *plain* dictionary of cookies as found in the request.

    Unlike ``get_cookies`` this returns a dictionary, not a
    ``SimpleCookie`` object.  For incoming cookies a dictionary fully
    represents the information.  Like ``get_cookies`` this caches and
    checks the cache.
    Rspaste.cookies.dict(RRRRtvalue(RRRRtresulttname((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyR	>s"	

cCsw|jddƒ}|sgSd|krK|d\}}||krK|Snt|dtdtƒ}||f|d<|S(s<
    Parses a query string into a list like ``[(name, value)]``.
    Caches this value in case parse_querystring is called again
    for the same request.

    You can pass the result to ``dict()``, but be aware that keys that
    appear multiple times will be lost (only the last value will be
    preserved).

    tQUERY_STRINGRspaste.parsed_querystringtkeep_blank_valueststrict_parsing(RRtTruetFalse(Rtsourcetparsedtcheck_source((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyR
Xs	cCs†|jddƒ}|stƒSd|krN|d\}}||krN|Snt|dtdtƒ}t|ƒ}||f|d<|S(sÊParses a query string like parse_querystring, but returns a MultiDict

    Caches this value in case parse_dict_querystring is called again
    for the same request.

    Example::

        >>> environ = {'QUERY_STRING': 'day=Monday&user=fred&user=jane'}
        >>> parsed = parse_dict_querystring(environ)

        >>> parsed['day']
        'Monday'
        >>> parsed['user']
        'fred'
        >>> parsed.getall('user')
        ['fred', 'jane']

    RRspaste.parsed_dict_querystringRR(RRRRR (RR!R"R#tmulti((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pytparse_dict_querystringos	cCsj|d}d|krU|d\}}||krU|rN|jt|ƒƒn|Sn|jddƒjƒ}d|kr’|jddƒd}n|dk}|jd
ƒsºd|d
<n|jddƒ}	d|d<|r tjdƒ}
|jdƒ}|jd
ƒ}d|d
<d|d<n
|d}
i}
tjrb|rL||
d
<n|rb||
d<qbntj	d|
d|dd|
}|	|d<|rª||d<||d
<nt
ƒ}t|jt
ƒr:xr|jƒD]a}||}t|t
ƒsý|g}nx3|D]+}|js|j}n|j||ƒqWqÒWn||f|d<|rf|jt|ƒƒn|S(s¥Parses the request, returning a MultiDict of form variables.

    If ``include_get_vars`` is true then GET (query string) variables
    will also be folded into the MultiDict.

    All values should be strings, except for file uploads which are
    left as ``FieldStorage`` instances.

    If the request was not a normal form request (e.g., a POST with an
    XML body) then ``environ['wsgi.input']`` won't be read.
    s
wsgi.inputspaste.parsed_formvarstCONTENT_TYPERt;iis!application/x-www-form-urlencodedsmultipart/form-datatCONTENT_LENGTHt0RtencodingterrorstfpRR(Rs!application/x-www-form-urlencodedsmultipart/form-data(tupdateR
RtlowertsplittsixtBytesIOtPY3tcgitFieldStorageRt
isinstanceRtlisttkeystfilenametadd(Rtinclude_get_varsR*R+R!R"R#ttypetfake_out_cgitold_query_stringtinputtold_content_typetold_content_lengthtkwparmstfstformvarsRtvaluesR((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyRsf
	




	
	


	

	c	Cs	|dd}|jdƒrÈ|d}d}d|kr¤|jddƒ\}}|ddkry|dkr¡d}q¡q¤|ddkr¤|d	kr¡d}q¡q¤n||7}|r3|d
|7}q3nk||d7}|ddkr|ddkr3|d|d7}q3n%|dd	kr3|d|d7}n|dkr^|t|jd
dƒƒ7}n|t|ƒ7}|r²|dkrŸ|t|jddƒƒ7}q²|t|ƒ7}n|r|dkrë|jdƒr|d|d7}qq|r|d|7}qn|S(s“Reconstructs the URL from the WSGI environment.

    You may override SCRIPT_NAME, PATH_INFO, and QUERYSTRING with
    the keyword arguments.

    swsgi.url_schemes://t	HTTP_HOSTt:ithttpst443thttpt80s:%stSERVER_NAMEtSERVER_PORTtSCRIPT_NAMERt	PATH_INFORt?N(RtNoneR/R(	Rtwith_query_stringtwith_path_infotscript_namet	path_infotquerystringturlthosttport((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyRÖsF

cCs"t|dtƒ}tj||ƒS(s

    Resolve the given relative URL as being relative to the
    location represented by the environment.  This can be used
    for redirecting to a relative path.  Note: if url is already
    absolute, this function will (intentionally) have no effect
    on it.

    RQ(RR turlparseturljoin(RVRtcur_url((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyRs	cCsx|s
dS|jdƒs)td|ƒ‚|jdƒ}d|krj|jddƒ\}}|d|fS|dfSdS(s
    Splits off the first segment of the path.  Returns (first_part,
    rest_of_path).  first_part can be None (if PATH_INFO is empty), ''
    (if PATH_INFO is '/'), or a name without any /'s.  rest_of_path
    can be '' or a string starting with /.

    Rt/s!PATH_INFO should start with /: %riN(NR(RPt
startswithtAssertionErrortlstripR/(RTtfirsttrest((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyR
s
cCs´|jddƒ}|sdSx-|jdƒrK|dcd7<|d}qWd|krv|dc|7<d|d<|S|jddƒ\}}d||d<|dc|7<|SdS(s†
    'Pops' off the next segment of PATH_INFO, pushing it onto
    SCRIPT_NAME, and returning that segment.

    For instance::

        >>> def call_it(script_name, path_info):
        ...     env = {'SCRIPT_NAME': script_name, 'PATH_INFO': path_info}
        ...     result = path_info_pop(env)
        ...     print('SCRIPT_NAME=%r; PATH_INFO=%r; returns=%r' % (
        ...         env['SCRIPT_NAME'], env['PATH_INFO'], result))
        >>> call_it('/foo', '/bar')
        SCRIPT_NAME='/foo/bar'; PATH_INFO=''; returns='bar'
        >>> call_it('/foo/bar', '')
        SCRIPT_NAME='/foo/bar'; PATH_INFO=''; returns=None
        >>> call_it('/foo/bar', '/')
        SCRIPT_NAME='/foo/bar/'; PATH_INFO=''; returns=''
        >>> call_it('', '/1/2/3')
        SCRIPT_NAME='/1'; PATH_INFO='/2/3'; returns='1'
        >>> call_it('', '//1/2')
        SCRIPT_NAME='//1'; PATH_INFO='/2'; returns='1'

    RNRR\RMiN(RRPR]R/(Rtpathtsegment((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyR's
t
AuthorizationtHTTP_CGI_AUTHORIZATIONsContent-LengthR(sContent-TypeR&ccsrxk|jƒD]]\}}|tkr7t||fVq
|jdƒr
|djƒjddƒ|fVq
q
WdS(s‚
    Parse the headers in the environment (like ``HTTP_HOST``) and
    yield a sequence of those (header_name, value) tuples.
    tHTTP_it_t-N(t	iteritemst_parse_headers_specialR]ttitletreplace(Rtcgi_varR((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyt
parse_headersVs
cBsheZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z	d„Z
d	„Zd
„ZRS(sgAn object that represents the headers as present in a
    WSGI environment.

    This object is a wrapper (with no internal state) for a WSGI
    request object, representing the CGI-style HTTP_* keys as a
    dictionary.  Because a CGI environment can only hold one value for
    each key, this dictionary is single-valued (unlike outgoing
    headers).
    cCs
||_dS(N(R(tselfR((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyt__init__mscCsJd|jddƒjƒ}|dkr1d}n|dkrFd}n|S(NRfRhRgtHTTP_CONTENT_LENGTHR(tHTTP_CONTENT_TYPER&(Rltupper(RoRtkey((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyt_trans_nameps		cCsQ|dkrdS|dkr dS|jdƒrI|djddƒjƒSdSdS(	NR&sContent-TypeR(sContent-LengthRfiRgRh(R]RlRkRP(RoRt((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyt
_trans_keyxscCs
t|jƒS(N(tlenR(Ro((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyt__len__‚scCs|j|j|ƒS(N(RRu(Rotitem((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyt__getitem__…scCs||j|j|ƒ<dS(N(RRu(RoRyR((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyt__setitem__ˆscCs|j|j|ƒ=dS(N(RRu(RoRy((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyt__delitem__Œsccs;x4|jD])}|j|ƒ}|dk	r
|Vq
q
WdS(N(RRvRP(RoRtR((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyt__iter__scCstt|ƒƒS(N(R6titer(Ro((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyR7•scCs|j|ƒ|jkS(N(RuR(RoRy((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyt__contains__˜s(
t__name__t
__module__t__doc__RpRuRvRxRzR{R|R}R7R(((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyRbs				
						cCs7|jrd|j|jfSd|j|j|jfS(sÛ monkey patch for FieldStorage.__repr__

    Unbelievely, the default __repr__ on FieldStorage reads
    the entire file content instead of being sane about it.
    This is a simple replacement that doesn't do that
    sFieldStorage(%r, %r)sFieldStorage(%r, %r, %r)(tfileRR8R(Ro((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyt_cgi_FieldStorage__repr__patch›s
	t__main__()R‚R3tsix.moves.urllibRRYtsix.moves.urllib.parseRRthttp.cookiesRRtImportErrortCookietUserDictRtcollectionsRR0tpaste.util.multidictRt__all__RR	R
R%RRPRRRR
RRjRnRR„R4t__repr__R€tdoctestttestmod(((sB/home/tvault/.virtenv/lib/python2.7/site-packages/paste/request.pyt<module>sJ

						 G1			(
	9