diff options
author | 2012-03-04 10:36:55 +0100 | |
---|---|---|
committer | 2012-03-04 10:36:55 +0100 | |
commit | 0ea5b5c16b1e11bb9159b5bee8373ec88a5355a5 (patch) | |
tree | 3b9358a36f9c6b660c496ea9626980813ad82542 /pygithub3/core/link.py | |
parent | remaining_requests attr to Github and Services (diff) | |
download | python-github3-0ea5b5c16b1e11bb9159b5bee8373ec88a5355a5.tar.xz python-github3-0ea5b5c16b1e11bb9159b5bee8373ec88a5355a5.zip |
Encapsulate Link header behaviour
Diffstat (limited to 'pygithub3/core/link.py')
-rw-r--r-- | pygithub3/core/link.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/pygithub3/core/link.py b/pygithub3/core/link.py new file mode 100644 index 0000000..1d6be2c --- /dev/null +++ b/pygithub3/core/link.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from urlparse import urlparse, parse_qs + +from .third_libs.link_header import parse_link_value + +class Link(str): + + class Url(str): + + @property + def query(self): + return urlparse(self).query + + @property + def params(self): + return dict([ + (param, values.pop()) + for param, values in parse_qs(self.query).items()]) + + def __init__(self, object_): + super(Link, self).__init__(object_) + parsed = parse_link_value(self) + for url in parsed: + setattr(self, parsed[url]['rel'], Link.Url(url)) |