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    
dmapi / usr / lib / python2.7 / dist-packages / dmapi / api / openstack / urlmap.pyc
Size: Mime:
ó
º¿cc@sôddlZddlmZddlZddlZejrLddlZnddl	m
ZddlmZej
eƒZdZejdeefƒZd„Zd„Zd	„Zd
efd„ƒYZd„Zd
ejjfd„ƒYZdS(iÿÿÿÿN(tlog(trequest(twsgis"[^"\\]*(?:\\.[^"\\]*)*"s*;\s*([^\s;=]+|%s)\s*(?:=\s*([^;]+|%s))?\s*cCs>|r:|d|dko%dknr:|dd!}n|S(s¬Unquotes a header value.
    This does not use the real unquoting but what browsers are actually
    using for quoting.

    :param value: the header value to unquote.
    iiÿÿÿÿt"i((tvalue((s>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pytunquote_header_values*cCskg}x^tj|ƒD]M}|d |dko;dknrVt|dd!ƒ}n|j|ƒqW|S(s
Parse lists as described by RFC 2068 Section 2.

    In particular, parse comma-separated lists where the elements of
    the list may include quoted-strings.  A quoted-string could
    contain a comma.  A non-quoted string could have quotes in the
    middle.  Quotes are removed automatically after parsing.

    The return value is a standard :class:`list`:

    >>> parse_list_header('token, "quoted value"')
    ['token', 'quoted value']

    :param value: a string with a list header.
    :return: :class:`list`
    iiÿÿÿÿR(turllib2tparse_http_listRtappend(Rtresulttitem((s>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pytparse_list_header+s$cCsOd„}|sdifS|d|ƒ}t|ƒd}t|ƒ}||fS(s#Parse a ``Content-Type`` like header into a tuple with the content
    type and the options:

    >>> parse_options_header('Content-Type: text/html; mimetype=text/html')
    ('Content-Type:', {'mimetype': 'text/html'})

    :param value: the header to parse.
    :return: (str, options)
    cssbx[tj|ƒD]J}|jƒ\}}t|ƒ}|dk	rOt|ƒ}n||fVqWdS(N(t_option_header_piece_retfinditertgroupsRtNone(tstringtmatchtkeyR((s>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pyt	_tokenizeMstt;i(tnexttdict(RRtpartstnametextra((s>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pytparse_options_headerCs
	
tAcceptcBs#eZd„Zd„Zd„ZRS(cCs,gt|ƒD]}t|ƒ^q
|_dS(N(RRt_content_types(tselfRtv((s>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pyt__init___sc
Csòd}d}i}d}xÍ|D]Å}x¼|jD]±\}}yt|jddƒƒ}	Wntk
rmq/nX|	|kr€q/n3||	kr³|jdƒ|jdƒkr³q/q³n|j||ƒr/|	}|}|}|}q/q/WqW||fS(Niÿÿÿÿs*/*tqit*(RRtfloattgett
ValueErrortcountt_match_mask(
Rtsupported_content_typestbest_qualitytbest_content_typetbest_paramst
best_matchtcontent_typetcontent_masktparamstquality((s>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pyR,cs*

	cCsPd|kr||kS|dkr&tS|d }|jddƒd}||kS(NR"s*/*iþÿÿÿt/ii(tTruetsplit(RtmaskR-t
mask_majortcontent_type_major((s>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pyR'€s

(t__name__t
__module__R R,R'(((s>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pyR^s		cKs²d|kr|jdƒ}n|jdƒ}|rK|j|d|ƒ}ntd|ƒ}xQt|jƒƒD]=\}}tjj|ƒ}|j|d|ƒ}|||<qmW|S(Nt
not_found_apptglobal_conf(	tpopR$tget_apptURLMaptlisttitemstpasteturlmaptparse_path_expression(tloaderR:t
local_confR9RAtpathtapp_nametapp((s>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pyturlmap_factoryŠsR=cBsGeZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCsyxr|jD]g\\}}}|rH||krH||d|krHq
n||ksg|j|dƒr
||fSq
WdS(s(Find longest match for a given URL path.t:R1N(NN(tapplicationst
startswithR(Rthosttportt	path_infotdomaintapp_urlRG((s>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pyt_matchšs&cs‡‡fd†}|S(Ncs|dcˆ7<ˆ||ƒS(NtSCRIPT_NAME((tenvirontstart_response(RGRP(s>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pytwrap¦s((RRGRPRU((RGRPs>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pyt_set_script_name¥scs‡‡‡fd†}|S(Ncs1|dcˆ7<ˆtˆƒ|d<ˆ||ƒS(NRRt	PATH_INFO(tlen(RSRT(RGRPRN(s>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pyRU­s((RRGRNRPRU((RGRPRNs>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pyt_munge_path¬scCsÔd}}}|jddƒ}t|ƒdkr^d|d}|tjƒkr^|}q^n|jdƒ}t|ƒdkrÇ|j|||ƒ\}	}
|	rÇ|
rÇ|
}|j|	||ƒ}qÇn|||fS(s@Check path suffix for MIME type and path prefix for API version.t.isapplication/R1N(RtrsplitRXRtget_supported_content_typesR3RQRY(RRLRMRNt	mime_typeRGRPRt
possible_typetpossible_apptpossible_app_url((s>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pyt_path_strategy´scCssd}t|jddƒƒd}d|kro|j||d|dƒ\}}|ro|j||ƒ}qon|S(s*Check Content-Type header for API version.tCONTENT_TYPERitversions/vN(RRR$RQRV(RRLRMRSRGR/RP((s>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pyt_content_type_strategyÈs#c
CsŠt|jddƒƒ}d}|j|ƒ\}}d|kr€|j||d|dƒ\}}	|r€|j||	ƒ}q€n||fS(s@Check Accept header for best matching MIME type and API version.tHTTP_ACCEPTRRcs/vN(RR$RR,RQRV(
RRLRMRSR(tacceptRGR]R/RP((s>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pyt_accept_strategyÓs#cCsþ|jd|jdƒƒjƒ}d|krH|jddƒ\}}n|ddkrad}nd}|d	}|j|tƒd}ttjƒƒ}|j|||ƒ\}}}	|	rÍ|	d
|ksÙ|d
kré|j	dƒn|s|j
|||ƒ}n|s|rb|j||||ƒ\}
}|
rI|rI|
}n|rb|rb|}qbn|sqd}n|s³|j|||ƒ\}}	|r³|j
|||	ƒ}q³n|rÐ||d
<|||ƒStjd|d	ƒ||d<|j||ƒS(Nt	HTTP_HOSTtSERVER_NAMERIiswsgi.url_schemethttpt80t443RWR1sapplication/atom+xmlsapplication/jsonsdmapi.best_content_types!Could not find application for %sspaste.urlmap_object(R$tlowerR3t
normalize_urltFalseR>RR\RaRRdRgRQRYtLOGtdebugtnot_found_application(RRSRTRLRMRNR(R]RGRPtpossible_mime_typeR_((s>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pyt__call__âsB!	
"
	
	


(	R7R8RQRVRYRaRdRgRt(((s>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pyR=™s						(tretoslo_logRtloggingtpaste.urlmapR@tsixtPY2RturllibRtdmapi.api.openstackRt	getLoggerR7Rpt_quoted_string_retcompileRRRRtobjectRRHRAR=(((s>/usr/lib/python2.7/dist-packages/dmapi/api/openstack/urlmap.pyt<module>s"					,