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:
		@@ -76,6 +76,7 @@ PLUGINS = [
 | 
			
		||||
    'xep_0256',  # Last Activity in Presence
 | 
			
		||||
    'xep_0257',  # Client Certificate Management for SASL EXTERNAL
 | 
			
		||||
    'xep_0258',  # Security Labels in XMPP
 | 
			
		||||
    'xep_0264',  # Jingle Content Thumbnails
 | 
			
		||||
#   'xep_0270',  # XMPP Compliance Suites 2010. Don’t automatically load
 | 
			
		||||
    'xep_0279',  # Server IP Check
 | 
			
		||||
    '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_0257 import XEP_0257
 | 
			
		||||
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_0280 import XEP_0280
 | 
			
		||||
from slixmpp.plugins.xep_0297 import XEP_0297
 | 
			
		||||
@@ -163,6 +164,7 @@ class PluginsDict(TypedDict):
 | 
			
		||||
    xep_0256: XEP_0256
 | 
			
		||||
    xep_0257: XEP_0257
 | 
			
		||||
    xep_0258: XEP_0258
 | 
			
		||||
    xep_0264: XEP_0264
 | 
			
		||||
    xep_0279: XEP_0279
 | 
			
		||||
    xep_0280: XEP_0280
 | 
			
		||||
    xep_0297: XEP_0297
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user