Tue, 04 Aug 2009 04:03:41 +0000
merge of '5cc8bb002fd80dded75fbe9e34ae56a95033d295'
and 'afcf938f83caa730df0ff19a8bb92f14f88c9d0e'
|
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 | 2 | |
| 3 | import dbus | |
| 4 | import re | |
| 5 | import sys | |
| 6 | import time | |
| 7 | import urllib | |
| 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 | 19 | |
| 20 | class CheckedObject: | |
| 21 | def __init__(self, obj): | |
| 22 | self.obj = obj | |
| 23 | ||
| 24 | def __getattr__(self, attr): | |
| 25 | return CheckedAttribute(self, attr) | |
| 26 | ||
| 27 | class CheckedAttribute: | |
| 28 | def __init__(self, cobj, attr): | |
| 29 | self.cobj = cobj | |
| 30 | self.attr = attr | |
| 31 | ||
| 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 | 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 | 45 | return result |
| 46 | ||
|
16205
397be242f4a4
Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents:
15987
diff
changeset
|
47 | cpurple = CheckedObject(purple) |
| 14582 | 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 | 55 | def convert(value): |
| 56 | try: | |
| 57 | return int(value) | |
| 58 | except: | |
| 59 | return value | |
| 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 | 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 | 122 | match = re.match(r"^aim:([^?]*)(\?(.*))", uri) |
| 14582 | 123 | if not match: |
| 124 | print "Invalid aim URI: %s" % uri | |
| 125 | return | |
| 126 | ||
| 16502 | 127 | command = urllib.unquote_plus(match.group(1)) |
| 128 | paramstring = match.group(3) | |
| 14582 | 129 | params = {} |
| 130 | if paramstring: | |
| 131 | for param in paramstring.split("&"): | |
| 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 | 134 | accountname = params.get("account", "") |
| 135 | screenname = params.get("screenname", "") | |
| 136 | ||
| 137 | account = findaccount(protocol, accountname) | |
| 138 | ||
|
14597
f6b179d6babb
[gaim-migrate @ 17256]
Richard Laager <rlaager@pidgin.im>
parents:
14582
diff
changeset
|
139 | if command.lower() == "goim": |
| 14582 | 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 | 142 | gochat(account, params) |
|
14597
f6b179d6babb
[gaim-migrate @ 17256]
Richard Laager <rlaager@pidgin.im>
parents:
14582
diff
changeset
|
143 | elif command.lower() == "addbuddy": |
| 14582 | 144 | addbuddy(account, screenname, params.get("group", "")) |
| 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 | 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 | 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 | 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 | 164 | command = urllib.unquote_plus(match.group(1)) |
| 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 | 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 | 223 | def msnim(uri): |
| 224 | protocol = "prpl-msn" | |
| 225 | match = re.match(r"^msnim:([^?]*)(\?(.*))", uri) | |
| 226 | if not match: | |
| 227 | print "Invalid msnim URI: %s" % uri | |
| 228 | return | |
| 229 | ||
|
14597
f6b179d6babb
[gaim-migrate @ 17256]
Richard Laager <rlaager@pidgin.im>
parents:
14582
diff
changeset
|
230 | command = urllib.unquote_plus(match.group(1)) |
| 14582 | 231 | paramstring = match.group(3) |
| 232 | params = {} | |
| 233 | if paramstring: | |
| 234 | for param in paramstring.split("&"): | |
| 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 | 237 | screenname = params.get("contact", "") |
| 238 | ||
| 239 | account = findaccount(protocol) | |
| 240 | ||
|
14597
f6b179d6babb
[gaim-migrate @ 17256]
Richard Laager <rlaager@pidgin.im>
parents:
14582
diff
changeset
|
241 | if command.lower() == "chat": |
| 14582 | 242 | goim(account, screenname) |
|
14597
f6b179d6babb
[gaim-migrate @ 17256]
Richard Laager <rlaager@pidgin.im>
parents:
14582
diff
changeset
|
243 | elif command.lower() == "add": |
| 14582 | 244 | addbuddy(account, screenname) |
| 245 | ||
|
17904
1128eede9349
explicit merge of 'c5abad45e8a7ccb777ff38f325d074314ca27dcb'
Jeff Connelly <jeff2@soc.pidgin.im>
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 | 327 | def ymsgr(uri): |
| 328 | protocol = "prpl-yahoo" | |
| 329 | match = re.match(r"^ymsgr:([^?]*)(\?([^&]*)(&(.*))?)", uri) | |
| 330 | if not match: | |
| 331 | print "Invalid ymsgr URI: %s" % uri | |
| 332 | return | |
| 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 | 336 | paramstring = match.group(5) |
| 337 | params = {} | |
| 338 | if paramstring: | |
| 339 | for param in paramstring.split("&"): | |
| 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 | 342 | |
| 343 | account = findaccount(protocol) | |
| 344 | ||
|
14601
8aa717885b14
[gaim-migrate @ 17260]
Richard Laager <rlaager@pidgin.im>
parents:
14597
diff
changeset
|
345 | if command.lower() == "sendim": |
| 14582 | 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 | 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 | 350 | addbuddy(account, screenname) |
| 351 | ||
| 352 | ||
| 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 | 355 | print "Usage: %s URI" % argv[0] |
| 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 | 362 | |
| 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 | 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>
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>
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 | 392 | |
| 393 | if __name__ == "__main__": | |
| 394 | main() |