From 6ae13ca61cae6199a116d15f86e01638cff0cb2c Mon Sep 17 00:00:00 2001 From: Guyzmo Date: Thu, 4 May 2017 13:43:09 +0200 Subject: [PATCH] Adds storage of json data; expose default_branch Signed-off-by: Guyzmo --- gogs_client/entities.py | 69 ++++++++++++++++++++++++++++------------- tests/interface_test.py | 3 ++ 2 files changed, 51 insertions(+), 21 deletions(-) diff --git a/gogs_client/entities.py b/gogs_client/entities.py index e3ce213..93afc4a 100644 --- a/gogs_client/entities.py +++ b/gogs_client/entities.py @@ -13,17 +13,24 @@ def json_get(parsed_json, key): return parsed_json[key] -class GogsUser(object): +class GogsEntity(object): + def __init__(self, json): + self.json = json + + +class GogsUser(GogsEntity): """ An immutable representation of a Gogs user """ - def __init__(self, user_id, username, full_name, email, avatar_url): + def __init__(self, user_id, username, full_name, email, avatar_url, json={}): + super(GogsUser, self).__init__(json=json) self._id = user_id self._username = username self._full_name = full_name self._email = email self._avatar_url = avatar_url + self._json = json @staticmethod def from_json(parsed_json): @@ -33,7 +40,7 @@ def from_json(parsed_json): email = parsed_json.get("email", None) avatar_url = parsed_json.get("avatar_url", None) return GogsUser(user_id=user_id, username=username, full_name=full_name, - email=email, avatar_url=avatar_url) + email=email, avatar_url=avatar_url, json=parsed_json) @property # named user_id to avoid conflict with built-in id def user_id(self): @@ -81,17 +88,20 @@ def avatar_url(self): return self._avatar_url -class GogsRepo(object): +class GogsRepo(GogsEntity): """ An immutable representation of a Gogs repository """ - def __init__(self, repo_id, owner, full_name, private, fork, urls, permissions): + def __init__(self, repo_id, owner, full_name, private, fork, default_branch, + urls, permissions, json={}): + super(GogsRepo, self).__init__(json=json) self._repo_id = repo_id self._owner = owner self._full_name = full_name self._private = private self._fork = fork + self._default_branch = default_branch self._urls = urls self._permissions = permissions @@ -102,11 +112,12 @@ def from_json(parsed_json): full_name = json_get(parsed_json, "full_name") private = json_get(parsed_json, "private") fork = json_get(parsed_json, "fork") + default_branch = json_get(parsed_json, "default_branch") urls = GogsRepo.Urls(json_get(parsed_json, "html_url"), json_get(parsed_json, "clone_url"), json_get(parsed_json, "ssh_url")) permissions = GogsRepo.Permissions.from_json(json_get(parsed_json, "permissions")) return GogsRepo(repo_id=repo_id, owner=owner, full_name=full_name, private=private, fork=fork, - urls=urls, permissions=permissions) + default_branch=default_branch, urls=urls, permissions=permissions, json=parsed_json) @property # named repo_id to avoid conflict with built-in id def repo_id(self): @@ -153,6 +164,15 @@ def fork(self): """ return self._fork + @property + def default_branch(self): + """ + The name of the default branch + + :rtype: bool + """ + return self._default_branch + @property def urls(self): """ @@ -204,8 +224,9 @@ def ssh_url(self): """ return self._ssh_url - class Permissions(object): - def __init__(self, admin, push, pull): + class Permissions(GogsEntity): + def __init__(self, admin, push, pull, json={}): + super(GogsRepo.Permissions, self).__init__(json=json) self._admin = admin self._push = push self._pull = pull @@ -215,7 +236,7 @@ def from_json(parsed_json): admin = parsed_json.get("admin", False) push = parsed_json.get("push", False) pull = parsed_json.get("pull", False) - return GogsRepo.Permissions(admin, push, pull) + return GogsRepo.Permissions(admin, push, pull, parsed_json) @property def admin(self): @@ -244,8 +265,9 @@ def pull(self): """ return self._pull - class Hook(object): - def __init__(self, hook_id, hook_type, events, active, config): + class Hook(GogsEntity): + def __init__(self, hook_id, hook_type, events, active, config, json={}): + super(GogsRepo.Hook, self).__init__(json=json) self._id = hook_id self._type = hook_type self._events = events @@ -260,7 +282,7 @@ def from_json(parsed_json): active = json_get(parsed_json, "active") config = json_get(parsed_json, "config") return GogsRepo.Hook(hook_id=hook_id, hook_type=hook_type, events=events, active=active, - config=config) + config=config, json=parsed_json) @property # named hook_id to avoid conflict with built-in id def hook_id(self): @@ -307,8 +329,9 @@ def config(self): """ return self._config - class DeployKey(object): - def __init__(self, key_id, key, url, title, created_at, read_only): + class DeployKey(GogsEntity): + def __init__(self, key_id, key, url, title, created_at, read_only, json={}): + super(GogsRepo.DeployKey, self).__init__(json=json) self._id = key_id self._key = key self._url = url @@ -326,7 +349,8 @@ def from_json(parsed_json): read_only = json_get(parsed_json, "read_only") return GogsRepo.DeployKey(key_id=key_id, key=key, url=url, - title=title, created_at=created_at, read_only=read_only) + title=title, created_at=created_at, + read_only=read_only, json=parsed_json) @property # named key_id to avoid conflict with built-in id def key_id(self): @@ -383,12 +407,13 @@ def read_only(self): return self._read_only -class GogsOrg(object): +class GogsOrg(GogsEntity): """ An immutable representation of a Gogs Organization """ - def __init__(self, org_id, username, full_name, avatar_url, description, website, location): + def __init__(self, org_id, username, full_name, avatar_url, description, website, location, json={}): + super(GogsOrg, self).__init__(json=json) self._id = org_id self._username = username self._full_name = full_name @@ -408,7 +433,7 @@ def from_json(parsed_json): location = json_get(parsed_json, "location") return GogsOrg(org_id=org_id, username=username, full_name=full_name, avatar_url=avatar_url, description=description, - website=website, location=location) + website=website, location=location, json=parsed_json) @property # named org_id to avoid conflict with built-in id def org_id(self): @@ -474,11 +499,12 @@ def location(self): return self._location -class GogsTeam(object): +class GogsTeam(GogsEntity): """ An immutable representation of a Gogs organization team """ - def __init__(self, team_id, name, description, permission): + def __init__(self, team_id, name, description, permission, json={}): + super(GogsTeam, self).__init__(json=json) self._id = team_id self._name = name self._description = description @@ -490,7 +516,8 @@ def from_json(parsed_json): name = json_get(parsed_json, "name") description = json_get(parsed_json, "description") permission = json_get(parsed_json, "permission") - return GogsTeam(team_id=team_id, name=name, description=description, permission=permission) + return GogsTeam(team_id=team_id, name=name, description=description, + permission=permission, json=parsed_json) @property # named team_id to avoid conflict with built-in id def team_id(self): diff --git a/tests/interface_test.py b/tests/interface_test.py index 69f4117..75b38ba 100644 --- a/tests/interface_test.py +++ b/tests/interface_test.py @@ -26,6 +26,7 @@ def setUp(self): "full_name": "unknwon/Hello-World", "private": false, "fork": false, + "default_branch": "master", "html_url": "http://localhost:3000/unknwon/Hello-World", "clone_url": "http://localhost:3000/unknwon/hello-world.git", "ssh_url": "jiahuachen@localhost:unknwon/hello-world.git", @@ -47,6 +48,7 @@ def setUp(self): "full_name": "unknwon/Hello-World", "private": false, "fork": false, + "default_branch": "master", "html_url": "http://localhost:3000/unknwon/Hello-World", "clone_url": "http://localhost:3000/unknwon/hello-world.git", "ssh_url": "jiahuachen@localhost:unknwon/hello-world.git", @@ -67,6 +69,7 @@ def setUp(self): "full_name": "unknwon/Hello-World-Again", "private": false, "fork": false, + "default_branch": "master", "html_url": "http://localhost:3000/unknwon/Hello-World-Again", "clone_url": "http://localhost:3000/unknwon/hello-world-again.git", "ssh_url": "jiahuachen@localhost:unknwon/hello-world-again.git",