summaryrefslogtreecommitdiff
path: root/ick2/controllerapi.py
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2017-10-16 18:51:14 +0300
committerLars Wirzenius <liw@liw.fi>2017-10-16 18:51:14 +0300
commit9ea6166068fd33b5fb3cec532ca14564c9b8673f (patch)
tree50b7d20cab28653e7a32f34c3357fe0a3932d6e3 /ick2/controllerapi.py
parentaf0f0511bcc6ed660227796c194d59f5c9bbf067 (diff)
downloadick2-9ea6166068fd33b5fb3cec532ca14564c9b8673f.tar.gz
Refactor: make it easier to add resource types to API
Diffstat (limited to 'ick2/controllerapi.py')
-rw-r--r--ick2/controllerapi.py29
1 files changed, 23 insertions, 6 deletions
diff --git a/ick2/controllerapi.py b/ick2/controllerapi.py
index c2d4ef4..aa0871b 100644
--- a/ick2/controllerapi.py
+++ b/ick2/controllerapi.py
@@ -171,24 +171,41 @@ class VersionAPI(APIbase):
pass
-class ProjectAPI(APIbase):
+class SubAPI(APIbase):
+
+ def __init__(self, type_name, state):
+ super().__init__(state)
+ self._type_name = type_name
def list(self):
return {
- 'projects': self._state.get_resources('projects'),
+ self._type_name: self._state.get_resources(self._type_name),
}
def show(self, name):
- return self._state.get_resource('projects', name)
+ return self._state.get_resource(self._type_name, name)
def create(self, body):
- return self._state.add_resource('projects', body['project'], body)
+ return self._state.add_resource(
+ self._type_name, self.get_resource_name(body), body)
+
+ def get_resource_name(self, resource): # pragma: no cover
+ raise NotImplementedError
def update(self, body, name):
- return self._state.update_resource('projects', name, body)
+ return self._state.update_resource(self._type_name, name, body)
def delete(self, name):
- self._state.remove_resource('projects', name)
+ self._state.remove_resource(self._type_name, name)
+
+
+class ProjectAPI(SubAPI):
+
+ def __init__(self, state):
+ super().__init__('projects', state)
+
+ def get_resource_name(self, resource):
+ return resource['project']
def response(status_code, body, headers): # pragma: no cover