summaryrefslogtreecommitdiff
path: root/ick2/controllerapi.py
diff options
context:
space:
mode:
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