import abc
import logging
import aiohttp
[docs]class CrudAPI(abc.ABC):
URL_TYPE: str = None
# CRUD: The most important methods for creating, editing, archiving and deleting alarms, events, news and messages
[docs] async def get(
self,
base_url: str,
access_token: str,
object_id: int = None,
*args, **kwargs,
):
"""
Methode zum Abrufen aller nicht archivierten Modelle
Method to read all non archived models
:param base_url: The URL of you divera instance
:param access_token: You personal access token
:param object_id: the id of the model
:param args:
:param kwargs:
:return:
"""
async with aiohttp.ClientSession() as session:
async with session.get(
base_url + f'/api/v2/{self.URL_TYPE}' + ('/' + str(object_id) if object_id is not None else ''),
headers={
'accept': 'application/json',
},
data={
'accesskey': access_token,
},
*args, **kwargs,
) as res:
if 400 <= res.status < 500:
logging.warning(PermissionError(res))
return await res.json()
[docs] def create(
self,
base_url: str,
access_token: str,
*args, **kwargs,
):
"""
Methode zum Erstellen eines neuen Modells
Method to create a new item
:param base_url: The URL of you divera instance
:param access_token: You personal access token
:param args:
:param kwargs:
:return:
"""
return NotImplemented
[docs] def get_detail(
self,
base_url: str,
access_token: str,
object_id: int,
*args, **kwargs,
):
"""
Methode zum Anzeigen des Modells anhand der ID
Method to show an alarm based on its id
:param base_url: The URL of you divera instance
:param access_token: You personal access token
:param object_id: the id of the model
:param args:
:param kwargs:
:return:
"""
return self.get(
base_url=base_url,
access_token=access_token,
object_id=object_id,
*args, **kwargs,
)
[docs] def change(
self,
base_url: str,
access_token: str,
object_id: int,
*args, **kwargs,
):
"""
Methode zum Bearbeiten des Modells anhand der ID
Method to edit an item based on its id
:param base_url: The URL of you divera instance
:param access_token: You personal access token
:param object_id: the id of the model
:param args:
:param kwargs:
:return:
"""
return NotImplemented
[docs] def delete(
self,
base_url: str,
access_token: str,
object_id: int,
*args, **kwargs,
):
"""
Methode zum Löschen des Modells
Method to delete an item
:param base_url: The URL of you divera instance
:param access_token: You personal access token
:param object_id: the id of the model
:param args:
:param kwargs:
:return:
"""
return NotImplemented
[docs] def add_attachment(
self,
base_url: str,
access_token: str,
object_id: int,
*args, **kwargs,
):
"""
Methode zum Hinzufügen eines Anhangs
Method to add an attachment
:param base_url: The URL of you divera instance
:param access_token: You personal access token
:param object_id: the id of the model
:param args:
:param kwargs:
:return:
"""
return NotImplemented
[docs] def archive(
self,
base_url: str,
access_token: str,
object_id: int,
*args, **kwargs,
):
"""
Methode zum Archivieren des Modells
Method to archive an alarm
:param base_url: The URL of you divera instance
:param access_token: You personal access token
:param object_id: the id of the model
:param args:
:param kwargs:
:return:
"""
return NotImplemented