Source code for divera.api.v2.message

"""
Wrap all calls to the divera api as defined by https://api.divera247.com/?urls.primaryName=api%2Fv2%2Falarm
"""
import random
import string

from divera.api import endpointwrappers as _epw
from divera.api.v2 import models as _models


[docs]class GetAll(_models.GetAll): path = '/api/v2/messages'
[docs]class Get(GetAll, _models.Get): @property def path(self): return f'/api/v2/messages/{self.obj.__getattribute__(self.obj.sorting_key)}'
[docs]class Create(_epw.FunctionalEndPoint, _epw.ObjectRelated): method = 'POST' path = '/api/v2/messages' def __call__( self, base_url: str, access_token: str, *args, **kwargs ) -> [list, dict]: while True: boundary = '-' * 27 + ''.join([random.choice(string.digits) for _ in range(30)]) if boundary not in self.obj.text: break kwargs = { 'headers': { 'Content-Type': f'multipart/form-data; boundary={boundary}', }, 'data': '\n'.join([ f'--{boundary}', f'Content-Disposition: form-data; name="Message[message_channel_id]"', f'', f'{self.obj.message_channel_id}', f'--{boundary}', f'Content-Disposition: form-data; name="Message[parent_id]"', f'', f'{self.obj.parent_id or 0}', f'--{boundary}', f'Content-Disposition: form-data; name="Message[text]"', f'', f'{self.obj.text}' or '\u200b', f'--{boundary}', ]) } return ( base_url.rstrip('/') + self.path + f'?accesskey={access_token}', ), kwargs
[docs]class Delete(_models.Delete): @property def path(self) -> str: return f'/api/v2/messages/{self.obj.id}'