diff options
author | 2012-02-03 02:59:53 +0100 | |
---|---|---|
committer | 2012-02-03 02:59:53 +0100 | |
commit | ae1c3c06c47866c8f392d05c63f597d71cebd691 (patch) | |
tree | 6543c55e2210bd91f59124785200d1fbfb6be872 /github3/packages | |
parent | Update setup.py (diff) | |
download | python-github3-ae1c3c06c47866c8f392d05c63f597d71cebd691.tar.xz python-github3-ae1c3c06c47866c8f392d05c63f597d71cebd691.zip |
Reset project
Diffstat (limited to 'github3/packages')
-rw-r--r-- | github3/packages/__init__.py | 0 | ||||
-rw-r--r-- | github3/packages/link_header.py | 90 |
2 files changed, 0 insertions, 90 deletions
diff --git a/github3/packages/__init__.py b/github3/packages/__init__.py deleted file mode 100644 index e69de29..0000000 --- a/github3/packages/__init__.py +++ /dev/null diff --git a/github3/packages/link_header.py b/github3/packages/link_header.py deleted file mode 100644 index 5ad20f1..0000000 --- a/github3/packages/link_header.py +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env python -# -*- encoding: utf-8 -*- - -""" -HTTP Link Header Parsing - -Simple routines to parse and manipulate Link headers. -""" - -__license__ = """ -Copyright (c) 2009 Mark Nottingham - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -""" - -import re - -TOKEN = r'(?:[^\(\)<>@,;:\\"/\[\]\?={} \t]+?)' -QUOTED_STRING = r'(?:"(?:\\"|[^"])*")' -PARAMETER = r'(?:%(TOKEN)s(?:=(?:%(TOKEN)s|%(QUOTED_STRING)s))?)' % locals() -LINK = r'<[^>]*>\s*(?:;\s*%(PARAMETER)s?\s*)*' % locals() -COMMA = r'(?:\s*(?:,\s*)+)' -LINK_SPLIT = r'%s(?=%s|\s*$)' % (LINK, COMMA) - -def _unquotestring(instr): - if instr[0] == instr[-1] == '"': - instr = instr[1:-1] - instr = re.sub(r'\\(.)', r'\1', instr) - return instr -def _splitstring(instr, item, split): - if not instr: - return [] - return [ h.strip() for h in re.findall(r'%s(?=%s|\s*$)' % (item, split), instr)] - -link_splitter = re.compile(LINK_SPLIT) - -def parse_link_value(instr): - """ - Given a link-value (i.e., after separating the header-value on commas), - return a dictionary whose keys are link URLs and values are dictionaries - of the parameters for their associated links. - - Note that internationalised parameters (e.g., title*) are - NOT percent-decoded. - - Also, only the last instance of a given parameter will be included. - - For example, - - >>> parse_link_value('</foo>; rel="self"; title*=utf-8\'de\'letztes%20Kapitel') - {'/foo': {'title*': "utf-8'de'letztes%20Kapitel", 'rel': 'self'}} - - """ - out = {} - if not instr: - return out - for link in [h.strip() for h in link_splitter.findall(instr)]: - url, params = link.split(">", 1) - url = url[1:] - param_dict = {} - for param in _splitstring(params, PARAMETER, "\s*;\s*"): - try: - a, v = param.split("=", 1) - param_dict[a.lower()] = _unquotestring(v) - except ValueError: - param_dict[param.lower()] = None - out[url] = param_dict - return out - - -if __name__ == '__main__': - import sys - if len(sys.argv) > 1: - print parse_link_value(sys.argv[1]) |