summaryrefslogtreecommitdiff
path: root/plugins/embed.py
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/embed.py')
-rw-r--r--plugins/embed.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/plugins/embed.py b/plugins/embed.py
new file mode 100644
index 00000000..717fc3c5
--- /dev/null
+++ b/plugins/embed.py
@@ -0,0 +1,45 @@
+"""
+Display an image URL as an embedded image in some clients like Conversations.
+Uses: https://xmpp.org/extensions/xep-0066.html#x-oob
+
+Usage
+-----
+
+.. glossary::
+
+ /embed <image_url>
+
+ Run this command to send the <image_url> as an
+ embedded image in your contact's client.
+"""
+
+from poezio import tabs
+from poezio.plugin import BasePlugin
+from poezio.theming import get_theme
+
+class Plugin(BasePlugin):
+
+ def init(self):
+ for tab_t in [tabs.MucTab, tabs.ConversationTab, tabs.PrivateTab]:
+ self.api.add_tab_command(tab_t, 'embed', self.embed_image_url,
+ help='Embed an image url into the contact\'s client',
+ usage='<image_url>')
+
+ def embed_image_url(self, args):
+ tab = self.api.current_tab()
+ message = self.core.xmpp.make_message(tab.name)
+ message['body'] = args
+ message['oob']['url'] = args
+ if isinstance(tab, tabs.MucTab):
+ message['type'] = 'groupchat'
+ else:
+ message['type'] = 'chat'
+ tab.add_message(
+ message['body'],
+ nickname=tab.core.own_nick,
+ nick_color=get_theme().COLOR_OWN_NICK,
+ identifier=message['id'],
+ jid=tab.core.xmpp.boundjid,
+ typ=1,
+ )
+ message.send()