annotate libpurple/purple-url-handler @ 32751:6b80dbe29e0c

I'm really going to try to release Tuesday night. I'm going to try to confirm that we still build on windows... but if anyone else wants to test it, that would be good, too
author Mark Doliner <mark@kingant.net>
date Mon, 12 Mar 2012 08:56:12 +0000
parents 380314aa5c1b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22013
fefe61275687 A small patch from shreevatsa: "Some of the Python scripts start with
Richard Laager <rlaager@wiktel.com>
parents: 17262
diff changeset
1 #!/usr/bin/env python
15884
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
2
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
3 import dbus
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
4 import re
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
5 import sys
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
6 import time
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
7 import urllib
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
8
23419
0565c227608d Handle D-Bus errors more helpfully in purple-url-handler.
Will Thompson <will.thompson@collabora.co.uk>
parents: 23070
diff changeset
9 bus = dbus.SessionBus()
0565c227608d Handle D-Bus errors more helpfully in purple-url-handler.
Will Thompson <will.thompson@collabora.co.uk>
parents: 23070
diff changeset
10 obj = None
0565c227608d Handle D-Bus errors more helpfully in purple-url-handler.
Will Thompson <will.thompson@collabora.co.uk>
parents: 23070
diff changeset
11 try:
0565c227608d Handle D-Bus errors more helpfully in purple-url-handler.
Will Thompson <will.thompson@collabora.co.uk>
parents: 23070
diff changeset
12 obj = bus.get_object("im.pidgin.purple.PurpleService",
0565c227608d Handle D-Bus errors more helpfully in purple-url-handler.
Will Thompson <will.thompson@collabora.co.uk>
parents: 23070
diff changeset
13 "/im/pidgin/purple/PurpleObject")
0565c227608d Handle D-Bus errors more helpfully in purple-url-handler.
Will Thompson <will.thompson@collabora.co.uk>
parents: 23070
diff changeset
14 except dbus.DBusException, e:
0565c227608d Handle D-Bus errors more helpfully in purple-url-handler.
Will Thompson <will.thompson@collabora.co.uk>
parents: 23070
diff changeset
15 if e._dbus_error_name == "org.freedesktop.DBus.Error.ServiceUnknown":
0565c227608d Handle D-Bus errors more helpfully in purple-url-handler.
Will Thompson <will.thompson@collabora.co.uk>
parents: 23070
diff changeset
16 print "Error: no libpurple-powered client is running. Try starting Pidgin or Finch."
0565c227608d Handle D-Bus errors more helpfully in purple-url-handler.
Will Thompson <will.thompson@collabora.co.uk>
parents: 23070
diff changeset
17 sys.exit(1)
16143
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
18 purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")
15884
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
19
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
20 class CheckedObject:
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
21 def __init__(self, obj):
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
22 self.obj = obj
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
23
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
24 def __getattr__(self, attr):
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
25 return CheckedAttribute(self, attr)
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
26
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
27 class CheckedAttribute:
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
28 def __init__(self, cobj, attr):
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
29 self.cobj = cobj
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
30 self.attr = attr
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
31
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
32 def __call__(self, *args):
16145
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
33 # Redirect stderr to suppress the printing of an " Introspect error"
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
34 # message if nothing is listening on the bus. We print a friendly
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
35 # error message ourselves.
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
36 real_stderr = sys.stderr
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
37 sys.stderr = None
15884
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
38 result = self.cobj.obj.__getattr__(self.attr)(*args)
16145
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
39 sys.stderr = real_stderr
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
40
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
41 # This can be useful for debugging.
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
42 # if (result == 0):
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
43 # print "Error: " + self.attr + " " + str(args) + " returned " + str(result)
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
44
15884
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
45 return result
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
46
16143
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
47 cpurple = CheckedObject(purple)
15884
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
48
17226
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
49 def extendlist(list, length, fill):
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
50 if len(list) < length:
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
51 return list + [fill] * (length - len(list))
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
52 else:
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
53 return list
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
54
15884
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
55 def convert(value):
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
56 try:
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
57 return int(value)
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
58 except:
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
59 return value
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
60
23420
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
61 def account_not_found():
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
62 print "No matching account found."
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
63 sys.exit(1)
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
64
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
65 def bring_account_online(account):
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
66 if not cpurple.PurpleAccountIsConnected(account):
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
67 # The last argument is meant to be a GList * but the D-Bus binding
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
68 # generator thing just wants a UInt32, which is pretty failing.
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
69 # Happily, passing a 0 to mean an empty list turns out to work anyway.
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
70 purple.PurpleAccountSetStatusList(account, "online", 1, 0)
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
71 purple.PurpleAccountConnect(account)
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
72
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
73 def findaccount(protocolname, accountname="", matcher=None):
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
74 if matcher:
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
75 for account in cpurple.PurpleAccountsGetAll():
31389
380314aa5c1b Fix some issues with purple-url-handler.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30270
diff changeset
76 if (protocolname != cpurple.PurpleAccountGetProtocolId(account)) or \
30270
adef21420870 Some fixes to IRC handling in purple-url-handler, mainly to fix
Stu Tomlinson <stu@nosnilmot.com>
parents: 25972
diff changeset
77 (accountname != "" and accountname != cpurple.PurpleAccountGetUsername(account)):
23420
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
78 continue
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
79 if matcher(account):
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
80 bring_account_online(account)
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
81 return account
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
82 account_not_found()
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
83
17226
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
84 # prefer connected accounts
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
85 account = cpurple.PurpleAccountsFindConnected(accountname, protocolname)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
86 if (account != 0):
23420
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
87 return account
17226
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
88
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
89 # try to get any account and connect it
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
90 account = cpurple.PurpleAccountsFindAny(accountname, protocolname)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
91 if (account == 0):
23420
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
92 account_not_found()
17226
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
93
23420
0c66344d0ed5 Give findaccount an option 'matcher' callback parameter, to match arbitrary
Will Thompson <will.thompson@collabora.co.uk>
parents: 23419
diff changeset
94 bring_account_online(account)
17226
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
95 return account
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
96
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
97 def goim(account, screenname, message=None):
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
98 # XXX: 1 == PURPLE_CONV_TYPE_IM
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
99 conversation = cpurple.PurpleConversationNew(1, account, screenname)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
100 if message:
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
101 purple.PurpleConvSendConfirm(conversation, message)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
102
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
103 def gochat(account, params, message=None):
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
104 connection = cpurple.PurpleAccountGetConnection(account)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
105 purple.ServJoinChat(connection, params)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
106
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
107 if message != None:
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
108 for i in range(20):
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
109 # XXX: 2 == PURPLE_CONV_TYPE_CHAT
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
110 conversation = purple.PurpleFindConversationWithAccount(2, params.get("channel", params.get("room")), account)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
111 if conversation:
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
112 purple.PurpleConvSendConfirm(conversation, message)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
113 break
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
114 else:
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
115 time.sleep(0.5)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
116
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
117 def addbuddy(account, screenname, group="", alias=""):
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
118 cpurple.PurpleBlistRequestAddBuddy(account, screenname, group, alias)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
119
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
120
15884
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
121 def aim(uri):
16143
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
122 protocol = "prpl-aim"
16452
27dfbca8dd40 Ticket #320 from ltm
Richard Laager <rlaager@wiktel.com>
parents: 16145
diff changeset
123 match = re.match(r"^aim:([^?]*)(\?(.*))", uri)
15884
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
124 if not match:
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
125 print "Invalid aim URI: %s" % uri
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
126 return
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
127
16452
27dfbca8dd40 Ticket #320 from ltm
Richard Laager <rlaager@wiktel.com>
parents: 16145
diff changeset
128 command = urllib.unquote_plus(match.group(1))
27dfbca8dd40 Ticket #320 from ltm
Richard Laager <rlaager@wiktel.com>
parents: 16145
diff changeset
129 paramstring = match.group(3)
15884
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
130 params = {}
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
131 if paramstring:
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
132 for param in paramstring.split("&"):
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
133 key, value = extendlist(param.split("=", 1), 2, "")
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
134 params[key] = urllib.unquote_plus(value)
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
135 accountname = params.get("account", "")
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
136 screenname = params.get("screenname", "")
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
137
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
138 account = findaccount(protocol, accountname)
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
139
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
140 if command.lower() == "goim":
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
141 goim(account, screenname, params.get("message"))
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
142 elif command.lower() == "gochat":
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
143 gochat(account, params)
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
144 elif command.lower() == "addbuddy":
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
145 addbuddy(account, screenname, params.get("group", ""))
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
146
17226
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
147 def gg(uri):
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
148 protocol = "prpl-gg"
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
149 match = re.match(r"^gg:(.*)", uri)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
150 if not match:
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
151 print "Invalid gg URI: %s" % uri
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
152 return
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
153
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
154 screenname = urllib.unquote_plus(match.group(1))
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
155 account = findaccount(protocol)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
156 goim(account, screenname)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
157
15884
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
158 def icq(uri):
16143
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
159 protocol = "prpl-icq"
16452
27dfbca8dd40 Ticket #320 from ltm
Richard Laager <rlaager@wiktel.com>
parents: 16145
diff changeset
160 match = re.match(r"^icq:([^?]*)(\?(.*))", uri)
16143
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
161 if not match:
16452
27dfbca8dd40 Ticket #320 from ltm
Richard Laager <rlaager@wiktel.com>
parents: 16145
diff changeset
162 print "Invalid icq URI: %s" % uri
16143
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
163 return
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
164
16452
27dfbca8dd40 Ticket #320 from ltm
Richard Laager <rlaager@wiktel.com>
parents: 16145
diff changeset
165 command = urllib.unquote_plus(match.group(1))
27dfbca8dd40 Ticket #320 from ltm
Richard Laager <rlaager@wiktel.com>
parents: 16145
diff changeset
166 paramstring = match.group(3)
16143
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
167 params = {}
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
168 if paramstring:
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
169 for param in paramstring.split("&"):
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
170 key, value = extendlist(param.split("=", 1), 2, "")
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
171 params[key] = urllib.unquote_plus(value)
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
172 accountname = params.get("account", "")
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
173 screenname = params.get("screenname", "")
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
174
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
175 account = findaccount(protocol, accountname)
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
176
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
177 if command.lower() == "goim":
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
178 goim(account, screenname, params.get("message"))
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
179 elif command.lower() == "gochat":
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
180 gochat(account, params)
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
181 elif command.lower() == "addbuddy":
598b1b15b199 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@wiktel.com>
parents: 15884
diff changeset
182 addbuddy(account, screenname, params.get("group", ""))
15884
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
183
17226
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
184 def irc(uri):
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
185 protocol = "prpl-irc"
30270
adef21420870 Some fixes to IRC handling in purple-url-handler, mainly to fix
Stu Tomlinson <stu@nosnilmot.com>
parents: 25972
diff changeset
186 match = re.match(r"^irc:(//([^/]*))?/?([^?]*)(\?(.*))?", uri)
17226
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
187 if not match:
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
188 print "Invalid irc URI: %s" % uri
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
189 return
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
190
31389
380314aa5c1b Fix some issues with purple-url-handler.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30270
diff changeset
191 server = urllib.unquote_plus(match.group(2) or "")
17226
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
192 target = match.group(3) or ""
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
193 query = match.group(5) or ""
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
194
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
195 modifiers = {}
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
196 if target:
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
197 for modifier in target.split(",")[1:]:
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
198 modifiers[modifier] = True
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
199
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
200 isnick = modifiers.has_key("isnick")
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
201
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
202 paramstring = match.group(5)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
203 params = {}
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
204 if paramstring:
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
205 for param in paramstring.split("&"):
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
206 key, value = extendlist(param.split("=", 1), 2, "")
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
207 params[key] = urllib.unquote_plus(value)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
208
23421
668b62240235 Make irc:// URLs use an account on the right server, not just the first IRC
Will Thompson <will.thompson@collabora.co.uk>
parents: 23420
diff changeset
209 def correct_server(account):
668b62240235 Make irc:// URLs use an account on the right server, not just the first IRC
Will Thompson <will.thompson@collabora.co.uk>
parents: 23420
diff changeset
210 username = cpurple.PurpleAccountGetUsername(account)
30270
adef21420870 Some fixes to IRC handling in purple-url-handler, mainly to fix
Stu Tomlinson <stu@nosnilmot.com>
parents: 25972
diff changeset
211 return ((server == "") or ("@" in username) and (server == (username.split("@"))[1]))
23421
668b62240235 Make irc:// URLs use an account on the right server, not just the first IRC
Will Thompson <will.thompson@collabora.co.uk>
parents: 23420
diff changeset
212
668b62240235 Make irc:// URLs use an account on the right server, not just the first IRC
Will Thompson <will.thompson@collabora.co.uk>
parents: 23420
diff changeset
213 account = findaccount(protocol, matcher=correct_server)
17226
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
214
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
215 if (target != ""):
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
216 if (isnick):
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
217 goim(account, urllib.unquote_plus(target.split(",")[0]), params.get("msg"))
23421
668b62240235 Make irc:// URLs use an account on the right server, not just the first IRC
Will Thompson <will.thompson@collabora.co.uk>
parents: 23420
diff changeset
218 else:
17226
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
219 channel = urllib.unquote_plus(target.split(",")[0])
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
220 if channel[0] != "#":
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
221 channel = "#" + channel
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
222 gochat(account, {"server": server, "channel": channel, "password": params.get("key", "")}, params.get("msg"))
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
223
15884
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
224 def msnim(uri):
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
225 protocol = "prpl-msn"
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
226 match = re.match(r"^msnim:([^?]*)(\?(.*))", uri)
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
227 if not match:
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
228 print "Invalid msnim URI: %s" % uri
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
229 return
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
230
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
231 command = urllib.unquote_plus(match.group(1))
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
232 paramstring = match.group(3)
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
233 params = {}
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
234 if paramstring:
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
235 for param in paramstring.split("&"):
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
236 key, value = extendlist(param.split("=", 1), 2, "")
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
237 params[key] = urllib.unquote_plus(value)
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
238 screenname = params.get("contact", "")
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
239
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
240 account = findaccount(protocol)
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
241
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
242 if command.lower() == "chat":
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
243 goim(account, screenname)
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
244 elif command.lower() == "add":
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
245 addbuddy(account, screenname)
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
246
17262
8a7238fb7905 explicit merge of 'dc4f2ee34039521ae6a198fe7d62f4dca8a84589'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16721 17226
diff changeset
247 def myim(uri):
23422
ab1f79d3ceeb Remove some tab literals from purple-url-handler, for consistency and for
Will Thompson <will.thompson@collabora.co.uk>
parents: 23421
diff changeset
248 protocol = "prpl-myspace"
ab1f79d3ceeb Remove some tab literals from purple-url-handler, for consistency and for
Will Thompson <will.thompson@collabora.co.uk>
parents: 23421
diff changeset
249 print "TODO: send uri: ", uri
ab1f79d3ceeb Remove some tab literals from purple-url-handler, for consistency and for
Will Thompson <will.thompson@collabora.co.uk>
parents: 23421
diff changeset
250 assert False, "Not implemented"
16397
81015b477483 Add stub for myim: URL handler.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16145
diff changeset
251
17226
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
252 def sip(uri):
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
253 protocol = "prpl-simple"
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
254 match = re.match(r"^sip:(.*)", uri)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
255 if not match:
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
256 print "Invalid sip URI: %s" % uri
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
257 return
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
258
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
259 screenname = urllib.unquote_plus(match.group(1))
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
260 account = findaccount(protocol)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
261 goim(account, screenname)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
262
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
263 def xmpp(uri):
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
264 protocol = "prpl-jabber"
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
265 match = re.match(r"^xmpp:(//([^/?#]*)/?)?([^?#]*)(\?([^;#]*)(;([^#]*))?)?(#(.*))?", uri)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
266 if not match:
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
267 print "Invalid xmpp URI: %s" % uri
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
268 return
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
269
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
270 tmp = match.group(2)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
271 if (tmp):
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
272 accountname = urllib.unquote_plus(tmp)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
273 else:
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
274 accountname = ""
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
275
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
276 screenname = urllib.unquote_plus(match.group(3))
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
277
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
278 tmp = match.group(5)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
279 if (tmp):
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
280 command = urllib.unquote_plus(tmp)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
281 else:
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
282 command = ""
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
283
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
284 paramstring = match.group(7)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
285 params = {}
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
286 if paramstring:
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
287 for param in paramstring.split(";"):
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
288 key, value = extendlist(param.split("=", 1), 2, "")
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
289 params[key] = urllib.unquote_plus(value)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
290
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
291 account = findaccount(protocol, accountname)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
292
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
293 if command.lower() == "message":
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
294 goim(account, screenname, params.get("body"))
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
295 elif command.lower() == "join":
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
296 room, server = screenname.split("@")
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
297 gochat(account, {"room": room, "server": server})
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
298 elif command.lower() == "roster":
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
299 addbuddy(account, screenname, params.get("group", ""), params.get("name", ""))
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
300 else:
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
301 goim(account, screenname)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
302
24889
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
303 def gtalk(uri):
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
304 protocol = "prpl-jabber"
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
305 match = re.match(r"^gtalk:([^?]*)(\?(.*))", uri)
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
306 if not match:
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
307 print "Invalid gtalk URI: %s" % uri
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
308 return
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
309
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
310 command = urllib.unquote_plus(match.group(1))
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
311 paramstring = match.group(3)
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
312 params = {}
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
313 if paramstring:
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
314 for param in paramstring.split("&"):
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
315 key, value = extendlist(param.split("=", 1), 2, "")
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
316 params[key] = urllib.unquote_plus(value)
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
317 accountname = params.get("from_jid", "")
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
318 jid = params.get("jid", "")
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
319
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
320 account = findaccount(protocol, accountname)
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
321
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
322 if command.lower() == "chat":
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
323 goim(account, jid)
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
324 elif command.lower() == "call":
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
325 # XXX V&V prompt to establish call
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
326 goim(account, jid)
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
327
15884
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
328 def ymsgr(uri):
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
329 protocol = "prpl-yahoo"
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
330 match = re.match(r"^ymsgr:([^?]*)(\?([^&]*)(&(.*))?)", uri)
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
331 if not match:
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
332 print "Invalid ymsgr URI: %s" % uri
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
333 return
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
334
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
335 command = urllib.unquote_plus(match.group(1))
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
336 screenname = urllib.unquote_plus(match.group(3))
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
337 paramstring = match.group(5)
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
338 params = {}
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
339 if paramstring:
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
340 for param in paramstring.split("&"):
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
341 key, value = extendlist(param.split("=", 1), 2, "")
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
342 params[key] = urllib.unquote_plus(value)
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
343
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
344 account = findaccount(protocol)
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
345
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
346 if command.lower() == "sendim":
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
347 goim(account, screenname, params.get("m"))
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
348 elif command.lower() == "chat":
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
349 gochat(account, {"room": screenname})
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
350 elif command.lower() == "addfriend":
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
351 addbuddy(account, screenname)
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
352
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
353
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
354 def main(argv=sys.argv):
23070
4b4be7609072 Import a patch (with changes) from Debian:
Ari Pollak <ari@debian.org>
parents: 22013
diff changeset
355 if len(argv) != 2 or argv[1] == "--help" or argv[1] == "-h":
15884
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
356 print "Usage: %s URI" % argv[0]
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
357 print "Example: %s \"xmpp:romeo@montague.net?message\"" % argv[0]
23070
4b4be7609072 Import a patch (with changes) from Debian:
Ari Pollak <ari@debian.org>
parents: 22013
diff changeset
358
4b4be7609072 Import a patch (with changes) from Debian:
Ari Pollak <ari@debian.org>
parents: 22013
diff changeset
359 if len(argv) != 2:
4b4be7609072 Import a patch (with changes) from Debian:
Ari Pollak <ari@debian.org>
parents: 22013
diff changeset
360 sys.exit(1)
4b4be7609072 Import a patch (with changes) from Debian:
Ari Pollak <ari@debian.org>
parents: 22013
diff changeset
361 else:
4b4be7609072 Import a patch (with changes) from Debian:
Ari Pollak <ari@debian.org>
parents: 22013
diff changeset
362 return 0
15884
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
363
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
364 uri = argv[1]
17226
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
365 type = uri.split(":")[0]
15884
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
366
16145
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
367 try:
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
368 if type == "aim":
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
369 aim(uri)
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
370 elif type == "gg":
17226
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
371 gg(uri)
16145
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
372 elif type == "icq":
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
373 icq(uri)
17226
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
374 elif type == "irc":
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
375 irc(uri)
16145
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
376 elif type == "msnim":
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
377 msnim(uri)
16397
81015b477483 Add stub for myim: URL handler.
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16145
diff changeset
378 elif type == "myim":
17262
8a7238fb7905 explicit merge of 'dc4f2ee34039521ae6a198fe7d62f4dca8a84589'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16721 17226
diff changeset
379 myim(uri)
17226
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
380 elif type == "sip":
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
381 sip(uri)
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
382 elif type == "xmpp":
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
383 xmpp(uri)
24889
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
384 elif type == "gtalk":
c260fe3ac5c8 Extend purple-url-handler to handle "gtalk" URIs. Fixes #7889
Paul Aurich <paul@darkrain42.org>
parents: 23422
diff changeset
385 gtalk(uri)
16145
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
386 elif type == "ymsgr":
d06673964ff9 Print decent error messages instead of stack traces if there's a problem.
Richard Laager <rlaager@wiktel.com>
parents: 16143
diff changeset
387 ymsgr(uri)
17226
5059a0a071a2 Restore the protocol specific URL handlers in purple-url-handler for those
Stu Tomlinson <stu@nosnilmot.com>
parents: 17037
diff changeset
388 else:
17262
8a7238fb7905 explicit merge of 'dc4f2ee34039521ae6a198fe7d62f4dca8a84589'
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 16721 17226
diff changeset
389 print "Unknown protocol: %s" % type
23419
0565c227608d Handle D-Bus errors more helpfully in purple-url-handler.
Will Thompson <will.thompson@collabora.co.uk>
parents: 23070
diff changeset
390 except dbus.DBusException, e:
0565c227608d Handle D-Bus errors more helpfully in purple-url-handler.
Will Thompson <will.thompson@collabora.co.uk>
parents: 23070
diff changeset
391 print "Error: %s" % (e.message)
0565c227608d Handle D-Bus errors more helpfully in purple-url-handler.
Will Thompson <will.thompson@collabora.co.uk>
parents: 23070
diff changeset
392 sys.exit(1)
15884
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
393
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
394 if __name__ == "__main__":
c6e563dfaa7a More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <stu@nosnilmot.com>
parents:
diff changeset
395 main()