Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889

Thu, 01 Jan 2009 17:03:44 +0000

author
Paul Aurich <darkrain42@pidgin.im>
date
Thu, 01 Jan 2009 17:03:44 +0000
changeset 25327
f24162b33a66
parent 25326
c4f4b222dbac
child 25328
95d3adda6822

Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889


committer: John Bailey <rekkanoryo@rekkanoryo.org>

libpurple/purple-url-handler file | annotate | diff | comparison | revisions
--- a/libpurple/purple-url-handler	Thu Jan 01 16:51:09 2009 +0000
+++ b/libpurple/purple-url-handler	Thu Jan 01 17:03:44 2009 +0000
@@ -299,6 +299,31 @@
     else:
         goim(account, screenname)
 
+def gtalk(uri):
+    protocol = "prpl-jabber"
+    match = re.match(r"^gtalk:([^?]*)(\?(.*))", uri)
+    if not match:
+        print "Invalid gtalk URI: %s" % uri
+        return
+
+    command = urllib.unquote_plus(match.group(1))
+    paramstring = match.group(3)
+    params = {}
+    if paramstring:
+        for param in paramstring.split("&"):
+            key, value = extendlist(param.split("=", 1), 2, "")
+            params[key] = urllib.unquote_plus(value)
+    accountname = params.get("from_jid", "")
+    jid = params.get("jid", "")
+
+    account = findaccount(protocol, accountname)
+
+    if command.lower() == "chat":
+        goim(account, jid)
+    elif command.lower() == "call":
+        # XXX V&V prompt to establish call
+        goim(account, jid)
+
 def ymsgr(uri):
     protocol = "prpl-yahoo"
     match = re.match(r"^ymsgr:([^?]*)(\?([^&]*)(&(.*))?)", uri)
@@ -355,6 +380,8 @@
             sip(uri)
         elif type == "xmpp":
             xmpp(uri)
+        elif type == "gtalk":
+            gtalk(uri)
         elif type == "ymsgr":
             ymsgr(uri)
         else:

mercurial