annotate libervia/backend/plugins/plugin_misc_app_manager/models.py @ 4351:6a0a081485b8

plugin autocrypt: Autocrypt protocol implementation: Implementation of autocrypt: `autocrypt` header is checked, and if present and no public key is known for the peer, the key is imported. `autocrypt` header is also added to outgoing message (only if an email gateway is detected). For the moment, the JID is use as identifier, but the real email used by gateway should be used in the future. rel 456
author Goffi <goffi@goffi.org>
date Fri, 28 Feb 2025 09:23:35 +0100
parents 0d7bb4df2343
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4247
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
1 #!/usr/bin/env python3
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
2
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
3 # Libervia plugin for Jingle (XEP-0166)
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
4 # Copyright (C) 2009-2021 Jérôme Poisson (goffi@goffi.org)
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
5
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
6 # This program is free software: you can redistribute it and/or modify
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # it under the terms of the GNU Affero General Public License as published by
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # the Free Software Foundation, either version 3 of the License, or
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # (at your option) any later version.
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
10
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
11 # This program is distributed in the hope that it will be useful,
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # GNU Affero General Public License for more details.
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
15
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
16 # You should have received a copy of the GNU Affero General Public License
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # along with this program. If not, see <http://www.gnu.org/licenses/>.
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
18
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
19
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
20 import abc
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
21 from pathlib import Path
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
22
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
23 from libervia.backend.core.i18n import _
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
24
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
25
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
26 class AppManagerBackend(abc.ABC):
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
27 """Abstract class for App Manager."""
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
28
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
29 name: str
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4247
diff changeset
30 discover_path: Path | None = None
4247
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
31
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
32 def __init__(self, host) -> None:
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
33 """Initialize the App Manager.
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
34
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
35 @param host: The host object.
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
36 """
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
37 self.host = host
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
38 self._am = host.plugins["APP_MANAGER"]
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
39 self._am.register(self)
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
40
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
41 @abc.abstractmethod
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
42 async def start(self, app_data: dict) -> None:
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
43 """Start the app.
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
44
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
45 @param app_data: A dictionary containing app data.
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
46 """
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
47 pass
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
48
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
49 @abc.abstractmethod
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
50 async def stop(self, app_data: dict) -> None:
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
51 """Stop the app.
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
52
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
53 @param app_data: A dictionary containing app data.
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
54 """
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
55 pass
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
56
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
57 @abc.abstractmethod
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
58 async def compute_expose(self, app_data: dict) -> None:
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
59 """Compute exposed data for the app.
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
60
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
61 @param app_data: A dictionary containing app data.
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
62 """
4aa62767f501 plugin app manager: various improvements:
Goffi <goffi@goffi.org>
parents:
diff changeset
63 pass