summaryrefslogtreecommitdiff
path: root/ick2/apibase.py
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2017-11-18 20:32:37 +0100
committerLars Wirzenius <liw@liw.fi>2017-11-18 20:32:37 +0100
commit792c059b9997b9e98ee12b6105b778b6d5a9e0ca (patch)
tree9f3c4e9f9f7e85940a25a11540d56f9c50b7b3f2 /ick2/apibase.py
parent10edd83909027a647e256afb76dc6a09a55b553b (diff)
downloadick2-792c059b9997b9e98ee12b6105b778b6d5a9e0ca.tar.gz
Refactor: move ResourceApiBase to apibase.py
Diffstat (limited to 'ick2/apibase.py')
-rw-r--r--ick2/apibase.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/ick2/apibase.py b/ick2/apibase.py
index 36aad3b..c7abc45 100644
--- a/ick2/apibase.py
+++ b/ick2/apibase.py
@@ -127,3 +127,31 @@ class APIbase:
def show(self, name):
raise NotImplementedError()
+
+
+class ResourceApiBase(APIbase):
+
+ def __init__(self, type_name, state):
+ super().__init__(state)
+ self._type_name = type_name
+
+ def list(self):
+ return {
+ self._type_name: self._state.get_resources(self._type_name),
+ }
+
+ def show(self, name):
+ return self._state.get_resource(self._type_name, name)
+
+ def create(self, 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(self._type_name, name, body)
+
+ def delete(self, name):
+ self._state.remove_resource(self._type_name, name)