Skip to content

Commit

Permalink
Support namespace/name for project id
Browse files Browse the repository at this point in the history
Closes #28
  • Loading branch information
Gauvain Pocentek committed Aug 21, 2014
1 parent d38f219 commit 34d6952
Showing 1 changed file with 24 additions and 8 deletions.
32 changes: 24 additions & 8 deletions gitlab.py
Expand Up @@ -187,11 +187,12 @@ def list(self, obj_class, **kwargs):
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)
Expand Down Expand Up @@ -225,7 +226,7 @@ def get(self, obj_class, id=None, **kwargs):
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:
Expand All @@ -247,8 +248,9 @@ def get(self, obj_class, id=None, **kwargs):
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,
Expand All @@ -275,7 +277,8 @@ def create(self, obj):
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:
Expand All @@ -294,7 +297,8 @@ def create(self, obj):
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
Expand Down Expand Up @@ -446,9 +450,21 @@ def Team(self, id=None, **kwargs):
"""
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
Expand Down

0 comments on commit 34d6952

Please sign in to comment.