libpurple/purple-url-handler

Wed, 13 May 2009 20:29:03 +0000

author
Marcus Lundblad <malu@pidgin.im>
date
Wed, 13 May 2009 20:29:03 +0000
changeset 27110
05ca719b901b
parent 26065
423feb1f53ed
child 30530
8f5fecc9b6c8
permissions
-rwxr-xr-x

Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.

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

mercurial