diff options
author | Gauvain Pocentek <gauvain.pocentek@objectif-libre.com> | 2014-08-21 15:24:43 +0200 |
---|---|---|
committer | Gauvain Pocentek <gauvain.pocentek@objectif-libre.com> | 2014-08-21 15:24:43 +0200 |
commit | 34d6952ba1ca011a8550a8a4ff65ba901871eb1e (patch) | |
tree | 207956d4c9470fb912f3936b8b457bdd6a96c281 | |
parent | d38f219712302a4d16c37b44109c7970cbdc073d (diff) | |
download | gitlab-34d6952ba1ca011a8550a8a4ff65ba901871eb1e.tar.gz |
Support namespace/name for project id
Closes #28
-rw-r--r-- | gitlab.py | 32 |
1 files changed, 24 insertions, 8 deletions
@@ -187,11 +187,12 @@ class Gitlab(object): raise GitlabListError('Missing attribute(s): %s' % ", ".join(missing)) - url = obj_class._url % kwargs + args = _sanitize_dict(kwargs) + url = obj_class._url % args url = '%s%s' % (self._url, url) - if kwargs: + if args: url += "?%s" % ("&".join( - ["%s=%s" % (k, v) for k, v in kwargs.items()])) + ["%s=%s" % (k, v) for k, v in args.items()])) try: r = requests.get(url, headers=self.headers, verify=self.ssl_verify) @@ -225,7 +226,7 @@ class Gitlab(object): raise GitlabListError('Missing attribute(s): %s' % ", ".join(missing)) - url = obj_class._url % kwargs + url = obj_class._url % _sanitize_dict(kwargs) if id is not None: url = '%s%s/%s' % (self._url, url, str(id)) else: @@ -247,8 +248,9 @@ class Gitlab(object): raise GitlabGetError('%d: %s' % (r.status_code, r.text)) def delete(self, obj): - url = obj._url % obj.__dict__ - url = '%s%s/%s' % (self._url, url, str(obj.id)) + args = _sanitize_dict(obj.__dict__) + url = obj._url % args + url = '%s%s/%s' % (self._url, url, args['id']) try: r = requests.delete(url, @@ -275,7 +277,8 @@ class Gitlab(object): raise GitlabCreateError('Missing attribute(s): %s' % ", ".join(missing)) - url = obj._url % obj.__dict__ + args = _sanitize_dict(obj.__dict__) + url = obj._url % args url = '%s%s' % (self._url, url) try: @@ -294,7 +297,8 @@ class Gitlab(object): raise GitlabCreateError('%d: %s' % (r.status_code, r.text)) def update(self, obj): - url = obj._url % obj.__dict__ + args = _sanitize_dict(obj.__dict__) + url = obj._url % args url = '%s%s/%s' % (self._url, url, str(obj.id)) # build a dict of data that can really be sent to server @@ -446,9 +450,21 @@ class Gitlab(object): """ return self._getListOrObject(Team, id, **kwargs) + def _get_display_encoding(): return sys.stdout.encoding or sys.getdefaultencoding() + +def _sanitize(value): + if type(value) in (str, unicode): + return value.replace('/', '%2F') + return value + + +def _sanitize_dict(src): + return {k:_sanitize(v) for k, v in src.items()} + + class GitlabObject(object): _url = None _returnClass = None |