summary refs log tree commit diff
diff options
context:
space:
mode:
authorsternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org>2020-11-30 16:29:53 +0100
committersternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org>2020-12-07 14:16:30 +0100
commit73e5fced569a3177629428d32f48a45066c6a3c4 (patch)
treee7e266af4088e62a6e359c40c49c61fdb4a8f28e
parent9611de4988858f79eb60d7c793e13f6dce5ae4eb (diff)
feat(clients): implement announcement API in python client
Towards #5.
-rw-r--r--clients/py/flipdot_gschichtler/__init__.py38
1 files changed, 37 insertions, 1 deletions
diff --git a/clients/py/flipdot_gschichtler/__init__.py b/clients/py/flipdot_gschichtler/__init__.py
index 06ee443..6942489 100644
--- a/clients/py/flipdot_gschichtler/__init__.py
+++ b/clients/py/flipdot_gschichtler/__init__.py
@@ -40,7 +40,7 @@ class FlipdotGschichtlerClient():
 
     def delete(self, queue_id):
         if self.api_token is None:
-            raise Exception('missing api token')
+            raise FlipdotGschichtlerNoToken
 
         endpoint = '/api/v2/queue/' + str(queue_id)
         r = requests.delete(self.base_url + endpoint, data = { 'token': self.api_token })
@@ -68,3 +68,39 @@ class FlipdotGschichtlerClient():
         else:
             message = self.__get_error_message(r)
             raise FlipdotGschichtlerClient(endpoint, r.status_code, message)
+
+    def announcement(self):
+        endpoint = '/api/v2/announcement'
+        r = requests.get(self.base_url + endpoint)
+
+        if r.status_code == 200:
+            return r.json()['announcement']
+        elif r.status_code == 404:
+            # no / empty announcement
+            assert 'announcement' in r.json()
+            return None
+        else:
+            message = self.__get_error_message(r)
+            raise FlipdotGschichtlerError(endpoint, r.status_code, message)
+
+    def set_announcement(self, text):
+        if self.api_token == None:
+            raise FlipdotGschichtlerNoToken
+
+        endpoint = '/api/v2/announcement'
+        r = requests.put(self.base_url + endpoint, data = { 'text': text, 'token': self.api_token })
+
+        if r.status_code != 200:
+            message = self.__get_error_message(r)
+            raise FlipdotGschichtlerError(endpoint, r.status_code, message)
+
+    def delete_announcement(self):
+        if self.api_token == None:
+            raise FlipdotGschichtlerNoToken
+
+        endpoint = '/api/v2/announcement'
+        r = requests.delete(self.base_url + endpoint, data = { 'token': self.api_token })
+
+        if r.status_code != 204:
+            message = self.__get_error_message(r)
+            raise FlipdotGschichtlerError(endpoint, r.status_code, message)