Skip to content
Snippets Groups Projects
private_chat.py 2.48 KiB
Newer Older
# Copyright (c) 2019 Nico Alt
# SPDX-License-Identifier: AGPL-3.0-only
# License-Filename: LICENSE.md
Nico's avatar
Nico committed
"""
Wrapper around Briar API's _/messages/_ resource
"""
from urllib.parse import urljoin
Nico's avatar
Nico committed
import requests
Nico's avatar
Nico committed
from briar_wrapper.constants import BASE_HTTP_URL
from briar_wrapper.model import Model


class PrivateChat(Model):

Nico's avatar
Nico committed
    _API_ENDPOINT = "messages/"
    def __init__(self, api, contact_id):
Nico's avatar
Nico committed
        """
        Initialize with `briar_wrapper.api.Api` instance `api` and `contact_id`
        """
Nico's avatar
Nico committed
        super().__init__(api)
        self._contact_id = contact_id

    def get(self):
Nico's avatar
Nico committed
        # pylint: disable=line-too-long
        """
        Returns list containing all messages from contact

        [Upstream documentation](https://code.briarproject.org/briar/briar/blob/master/briar-headless/README.md#listing-all-private-messages)

        .. versionadded:: 0.0.3
        """
Nico's avatar
Nico committed
        url = urljoin(BASE_HTTP_URL,
Nico's avatar
Nico committed
                      self._API_ENDPOINT + str(self._contact_id))
Nico's avatar
Nico committed
        request = requests.get(url, headers=self._headers)
        return request.json()
    def send(self, message):
Nico's avatar
Nico committed
        # pylint: disable=line-too-long
        """
        Sends `message` to contact

        [Upstream documentation](https://code.briarproject.org/briar/briar/blob/master/briar-headless/README.md#writing-a-private-message)

        .. versionadded:: 0.0.3
        """
Nico's avatar
Nico committed
        url = urljoin(BASE_HTTP_URL,
Nico's avatar
Nico committed
                      self._API_ENDPOINT + str(self._contact_id))
Nico's avatar
Nico committed
        requests.post(url, headers=self._headers, json={"text": message})
Nico's avatar
Nico committed

    def mark_read(self, message_id):
        # pylint: disable=line-too-long
        """
        Marks message as read

        [Upstream documentation](https://code.briarproject.org/briar/briar/blob/master/briar-headless/README.md#marking-private-messages-as-read)

        .. versionadded:: 0.0.5
        """
        url = urljoin(BASE_HTTP_URL,
                      self._API_ENDPOINT + str(self._contact_id) + "/read")
        requests.post(url, headers=self._headers, json={"messageId": message_id})

    def delete_all_messages(self):
        # pylint: disable=line-too-long
        """
        Deletes all messages

        [Upstream documentation](https://code.briarproject.org/briar/briar/-/blob/master/briar-headless/README.md#deleting-all-private-messages)

        .. versionadded:: 0.0.5
        """
        url = urljoin(BASE_HTTP_URL,
                      self._API_ENDPOINT + str(self._contact_id) + "/all")
        requests.delete(url, headers=self._headers)