Skip to content
Snippets Groups Projects
contacts.py 1.39 KiB
Newer Older
Nico's avatar
Nico committed
# Copyright (c) 2019 Nico Alt
# SPDX-License-Identifier: AGPL-3.0-only
# License-Filename: LICENSE.md

from operator import itemgetter
from urllib.parse import urljoin
from requests import get as _get
from requests import post as _post
Nico's avatar
Nico committed
from briar_wrapper.constants import BASE_HTTP_URL
from briar_wrapper.model import Model
class Contacts(Model):

    API_ENDPOINT = "contacts/"

    _on_contact_added_callback = None

    def add_pending(self, link, alias):
        url = urljoin(BASE_HTTP_URL, self.API_ENDPOINT + "add/" + "pending/")
        _post(url, headers=self._headers, json={"link": link, "alias": alias})
Nico's avatar
Nico committed

    def get(self):
        url = urljoin(BASE_HTTP_URL, self.API_ENDPOINT)
        request = _get(url, headers=self._headers)
        contacts = request.json()
        contacts.sort(key=itemgetter("lastChatActivity"),
                      reverse=True)
        return contacts

    def get_link(self):
        url = urljoin(BASE_HTTP_URL, self.API_ENDPOINT + "add/" + "link/")
        request = _get(url, headers=self._headers).json()
        return request['link']

    def watch_contacts(self, callback):
        self._on_contact_added_callback = callback
        self._api.socket_listener.watch("ContactAddedEvent",
                                        self._on_contact_added)

    # pylint: disable=unused-argument
    def _on_contact_added(self, event):
        self._on_contact_added_callback()