XEP-0264: Jingle Content Thumbnails (new plugin)
Cheogram actually uses it with SIMS to embed a blurhash preview in the stanza.
This commit is contained in:
parent
909c865524
commit
85b7210115
@ -76,6 +76,7 @@ PLUGINS = [
|
|||||||
'xep_0256', # Last Activity in Presence
|
'xep_0256', # Last Activity in Presence
|
||||||
'xep_0257', # Client Certificate Management for SASL EXTERNAL
|
'xep_0257', # Client Certificate Management for SASL EXTERNAL
|
||||||
'xep_0258', # Security Labels in XMPP
|
'xep_0258', # Security Labels in XMPP
|
||||||
|
'xep_0264', # Jingle Content Thumbnails
|
||||||
# 'xep_0270', # XMPP Compliance Suites 2010. Don’t automatically load
|
# 'xep_0270', # XMPP Compliance Suites 2010. Don’t automatically load
|
||||||
'xep_0279', # Server IP Check
|
'xep_0279', # Server IP Check
|
||||||
'xep_0280', # Message Carbons
|
'xep_0280', # Message Carbons
|
||||||
|
5
slixmpp/plugins/xep_0264/__init__.py
Normal file
5
slixmpp/plugins/xep_0264/__init__.py
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
from slixmpp.plugins.base import register_plugin
|
||||||
|
|
||||||
|
from .thumbnail import XEP_0264
|
||||||
|
|
||||||
|
register_plugin(XEP_0264)
|
36
slixmpp/plugins/xep_0264/stanza.py
Normal file
36
slixmpp/plugins/xep_0264/stanza.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
from slixmpp import register_stanza_plugin
|
||||||
|
from slixmpp.plugins.xep_0234.stanza import File
|
||||||
|
from slixmpp.xmlstream import ElementBase
|
||||||
|
|
||||||
|
NS = "urn:xmpp:thumbs:1"
|
||||||
|
|
||||||
|
|
||||||
|
class Thumbnail(ElementBase):
|
||||||
|
name = plugin_attrib = "thumbnail"
|
||||||
|
namespace = NS
|
||||||
|
interfaces = {"uri", "media-type", "width", "height"}
|
||||||
|
|
||||||
|
def get_width(self) -> int:
|
||||||
|
return _int_or_none(self._get_attr("width"))
|
||||||
|
|
||||||
|
def get_height(self) -> int:
|
||||||
|
return _int_or_none(self._get_attr("height"))
|
||||||
|
|
||||||
|
def set_width(self, v: int) -> None:
|
||||||
|
self._set_attr("width", str(v))
|
||||||
|
|
||||||
|
def set_height(self, v: int) -> None:
|
||||||
|
self._set_attr("height", str(v))
|
||||||
|
|
||||||
|
|
||||||
|
def _int_or_none(v) -> Optional[int]:
|
||||||
|
try:
|
||||||
|
return int(v)
|
||||||
|
except ValueError:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def register_plugin():
|
||||||
|
register_stanza_plugin(File, Thumbnail)
|
24
slixmpp/plugins/xep_0264/thumbnail.py
Normal file
24
slixmpp/plugins/xep_0264/thumbnail.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import logging
|
||||||
|
|
||||||
|
from slixmpp.plugins import BasePlugin
|
||||||
|
|
||||||
|
from . import stanza
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class XEP_0264(BasePlugin):
|
||||||
|
|
||||||
|
"""
|
||||||
|
XEP-0264: Jingle Content Thumbnails
|
||||||
|
|
||||||
|
Can also be used with 0385 (Stateless inline media sharing)
|
||||||
|
"""
|
||||||
|
|
||||||
|
name = "xep_0264"
|
||||||
|
description = "XEP-0264: Jingle Content Thumbnails"
|
||||||
|
dependencies = {"xep_0234"}
|
||||||
|
stanza = stanza
|
||||||
|
|
||||||
|
def plugin_init(self):
|
||||||
|
stanza.register_plugin()
|
@ -69,6 +69,7 @@ from slixmpp.plugins.xep_0249 import XEP_0249
|
|||||||
from slixmpp.plugins.xep_0256 import XEP_0256
|
from slixmpp.plugins.xep_0256 import XEP_0256
|
||||||
from slixmpp.plugins.xep_0257 import XEP_0257
|
from slixmpp.plugins.xep_0257 import XEP_0257
|
||||||
from slixmpp.plugins.xep_0258 import XEP_0258
|
from slixmpp.plugins.xep_0258 import XEP_0258
|
||||||
|
from slixmpp.plugins.xep_0264 import XEP_0264
|
||||||
from slixmpp.plugins.xep_0279 import XEP_0279
|
from slixmpp.plugins.xep_0279 import XEP_0279
|
||||||
from slixmpp.plugins.xep_0280 import XEP_0280
|
from slixmpp.plugins.xep_0280 import XEP_0280
|
||||||
from slixmpp.plugins.xep_0297 import XEP_0297
|
from slixmpp.plugins.xep_0297 import XEP_0297
|
||||||
@ -163,6 +164,7 @@ class PluginsDict(TypedDict):
|
|||||||
xep_0256: XEP_0256
|
xep_0256: XEP_0256
|
||||||
xep_0257: XEP_0257
|
xep_0257: XEP_0257
|
||||||
xep_0258: XEP_0258
|
xep_0258: XEP_0258
|
||||||
|
xep_0264: XEP_0264
|
||||||
xep_0279: XEP_0279
|
xep_0279: XEP_0279
|
||||||
xep_0280: XEP_0280
|
xep_0280: XEP_0280
|
||||||
xep_0297: XEP_0297
|
xep_0297: XEP_0297
|
||||||
|
Loading…
Reference in New Issue
Block a user