comparison libervia/backend/plugins/plugin_xep_0447.py @ 4335:430d5d99a740

plugin XEP-0358: "Publishing Available Jingle Sessions" implementation: rel 453
author Goffi <goffi@goffi.org>
date Tue, 03 Dec 2024 00:13:07 +0100
parents 111dce64dcb5
children
comparison
equal deleted inserted replaced
4334:111dce64dcb5 4335:430d5d99a740
45 from libervia.backend.core.constants import Const as C 45 from libervia.backend.core.constants import Const as C
46 from libervia.backend.core.core_types import SatXMPPEntity 46 from libervia.backend.core.core_types import SatXMPPEntity
47 from libervia.backend.core.i18n import _ 47 from libervia.backend.core.i18n import _
48 from libervia.backend.core.log import getLogger 48 from libervia.backend.core.log import getLogger
49 from libervia.backend.plugins.plugin_xep_0103 import URLData, XEP_0103 49 from libervia.backend.plugins.plugin_xep_0103 import URLData, XEP_0103
50 from libervia.backend.plugins.plugin_xep_0358 import JinglePub, XEP_0358
50 from libervia.backend.plugins.plugin_xep_0446 import FileMetadata, XEP_0446 51 from libervia.backend.plugins.plugin_xep_0446 import FileMetadata, XEP_0446
51 from libervia.backend.tools import stream 52 from libervia.backend.tools import stream
52 from libervia.backend.tools.web import treq_client_no_ssl 53 from libervia.backend.tools.web import treq_client_no_ssl
53 54
54 log = getLogger(__name__) 55 log = getLogger(__name__)
61 C.PI_MODES: C.PLUG_MODE_BOTH, 62 C.PI_MODES: C.PLUG_MODE_BOTH,
62 C.PI_PROTOCOLS: ["XEP-0447"], 63 C.PI_PROTOCOLS: ["XEP-0447"],
63 C.PI_DEPENDENCIES: [ 64 C.PI_DEPENDENCIES: [
64 "XEP-0103", 65 "XEP-0103",
65 "XEP-0334", 66 "XEP-0334",
67 "XEP-0358",
66 "XEP-0446", 68 "XEP-0446",
67 "ATTACH", 69 "ATTACH",
68 "DOWNLOAD", 70 "DOWNLOAD",
69 ], 71 ],
70 C.PI_RECOMMENDATIONS: ["XEP-0363"], 72 C.PI_RECOMMENDATIONS: ["XEP-0363"],
184 186
185 def to_element(self) -> domish.Element: 187 def to_element(self) -> domish.Element:
186 return super().to_element() 188 return super().to_element()
187 189
188 190
191 class JinglePubSource(JinglePub, Source):
192 type = "jingle"
193
194 @classmethod
195 def from_element(cls, element: domish.Element) -> Self:
196 return super().from_element(element)
197
198 def to_element(self) -> domish.Element:
199 return super().to_element()
200
201
189 class XEP_0447: 202 class XEP_0447:
190 namespace = NS_SFS 203 namespace = NS_SFS
191 204
192 def __init__(self, host): 205 def __init__(self, host):
193 self.host = host 206 self.host = host
194 log.info(_("XEP-0447 (Stateless File Sharing) plugin initialization")) 207 log.info(_("XEP-0447 (Stateless File Sharing) plugin initialization"))
195 host.register_namespace("sfs", NS_SFS) 208 host.register_namespace("sfs", NS_SFS)
196 FileSharing._sfs = self 209 FileSharing._sfs = self
197 self._sources_handlers: dict[tuple[str, str], type[Source]] = {} 210 self._sources_handlers: dict[tuple[str, str], type[Source]] = {}
198 self._u = cast(XEP_0103, host.plugins["XEP-0103"]) 211 self._u = cast(XEP_0103, host.plugins["XEP-0103"])
212 self._jp = cast(XEP_0358, host.plugins["XEP-0358"])
199 self._hints = host.plugins["XEP-0334"] 213 self._hints = host.plugins["XEP-0334"]
200 self._m = cast(XEP_0446, host.plugins["XEP-0446"]) 214 self._m = cast(XEP_0446, host.plugins["XEP-0446"])
201 self._http_upload = host.plugins.get("XEP-0363") 215 self._http_upload = host.plugins.get("XEP-0363")
202 self._attach = host.plugins["ATTACH"] 216 self._attach = host.plugins["ATTACH"]
203 self._attach.register(self.can_handle_attachment, self.attach, priority=1000) 217 self._attach.register(self.can_handle_attachment, self.attach, priority=1000)