Philipp Hörist pushed to branch master at gajim / gajim


Commits:
8992ae1a by Daniel Brötzmann at 2019-06-13T21:02:47Z
Split message actions from URIs

- - - - -


1 changed file:

- gajim/common/helpers.py


Changes:

=====================================
gajim/common/helpers.py
=====================================
@@ -32,7 +32,6 @@ import sys
 import re
 import os
 import subprocess
-import urllib
 import webbrowser
 import errno
 import select
@@ -48,6 +47,8 @@ import collections
 import random
 import string
 from string import Template
+import urllib
+from urllib.parse import unquote
 from io import StringIO
 from datetime import datetime, timedelta
 from distutils.version import LooseVersion as V
@@ -1480,20 +1481,38 @@ def delay_execution(milliseconds):
     return delay_execution_decorator
 
 
+def parse_uri_actions(uri):
+    uri = uri[5:]
+    if '?' not in uri:
+        return 'message', {'jid': uri}
+
+    jid, action = uri.split('?', 1)
+    data = {'jid': jid}
+    if ';' in action:
+        action, keys = action.split(';', 1)
+        action_keys = keys.split(';')
+        for key in action_keys:
+            if key.startswith('subject='):
+                data['subject'] = unquote(key[8:])
+
+            elif key.startswith('body='):
+                data['body'] = unquote(key[5:])
+
+            elif key.startswith('thread='):
+                data['thread'] = key[7:]
+    return action, data
+
+
 def parse_uri(uri):
     if uri.startswith('xmpp:'):
-        uri = uri[5:]
-        if '?' in uri:
-            jid, action = uri.split('?')
-            try:
-                return URI(type=URIType.XMPP,
-                           action=URIAction(action),
-                           data=jid)
-            except ValueError:
-                # Unknown action
-                pass
-
-        return URI(type=URIType.XMPP, action=URIAction.MESSAGE, data=uri)
+        action, data = parse_uri_actions(uri)
+        try:
+            return URI(type=URIType.XMPP,
+                       action=URIAction(action),
+                       data=data)
+        except ValueError:
+            # Unknown action
+            return URI(type=URIType.UNKNOWN)
 
     if uri.startswith('mailto:'):
         uri = uri[7:]
@@ -1548,7 +1567,8 @@ def open_uri(uri, account=None):
         if uri.action == URIAction.JOIN:
             app.interface.join_gc_minimal(account, uri.data)
         elif uri.action == URIAction.MESSAGE:
-            app.interface.new_chat_from_jid(account, uri.data)
+            app.interface.new_chat_from_jid(account, uri.data['jid'],
+                                            message=uri.data.get('body'))
         else:
             log.warning('Cant open URI: %s', uri)
 



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/commit/8992ae1ab730295ab813822b6353b155cbd660d7

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/commit/8992ae1ab730295ab813822b6353b155cbd660d7
You're receiving this email because of your account on dev.gajim.org.

_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to