libpurple/purple-remote

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 25668
7897eda26d25
child 27588
a5b5916e6da7
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: 20195
diff changeset
1 #!/usr/bin/env python
11187
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
2
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
3 import dbus
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
4 import re
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
5 import urllib
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
6 import sys
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
7
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
8 import xml.dom.minidom
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
9
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
10 xml.dom.minidom.Element.all = xml.dom.minidom.Element.getElementsByTagName
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
11
20195
10848da5f7ed applied changes from c699de7eec5194554b5fcb885019835fb902d95a
Luke Schierer <lschiere@pidgin.im>
parents: 18885
diff changeset
12 obj = None
10848da5f7ed applied changes from c699de7eec5194554b5fcb885019835fb902d95a
Luke Schierer <lschiere@pidgin.im>
parents: 18885
diff changeset
13 try:
10848da5f7ed applied changes from c699de7eec5194554b5fcb885019835fb902d95a
Luke Schierer <lschiere@pidgin.im>
parents: 18885
diff changeset
14 obj = dbus.SessionBus().get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
10848da5f7ed applied changes from c699de7eec5194554b5fcb885019835fb902d95a
Luke Schierer <lschiere@pidgin.im>
parents: 18885
diff changeset
15 except:
10848da5f7ed applied changes from c699de7eec5194554b5fcb885019835fb902d95a
Luke Schierer <lschiere@pidgin.im>
parents: 18885
diff changeset
16 pass
10848da5f7ed applied changes from c699de7eec5194554b5fcb885019835fb902d95a
Luke Schierer <lschiere@pidgin.im>
parents: 18885
diff changeset
17
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")
11187
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
19
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
20 class CheckedObject:
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
21 def __init__(self, obj):
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
22 self.obj = obj
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
23
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
24 def __getattr__(self, attr):
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
25 return CheckedAttribute(self, attr)
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
26
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
27 class CheckedAttribute:
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
28 def __init__(self, cobj, attr):
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
29 self.cobj = cobj
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
30 self.attr = attr
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
31
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
32 def __call__(self, *args):
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
33 result = self.cobj.obj.__getattr__(self.attr)(*args)
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
34 if result == 0:
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
35 raise "Error: " + self.attr + " " + str(args) + " returned " + str(result)
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
36 return result
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
37
23237
7ec42e06496f Import a patch (with changes) from Debian:
Ari Pollak <ari@debian.org>
parents: 22141
diff changeset
38 def show_help(requested=False):
17574
dc3189c42c0c Fix http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=240589
Mark Doliner <markdoliner@pidgin.im>
parents: 17399
diff changeset
39 print """This program uses D-Bus to communicate with purple.
15716
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
40
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
41 Usage:
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
42
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
43 %s "command1" "command2" ...
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
44
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
45 Each command is of one of the three types:
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
46
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
47 [protocol:]commandname?param1=value1&param2=value2&...
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
48 FunctionName?param1=value1&param2=value2&...
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
49 FunctionName(value1,value2,...)
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
50
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
51 The second and third form are provided for completeness but their use
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
52 is not recommended; use purple-send or purple-send-async instead. The
15716
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
53 second form uses introspection to find out the parameter names and
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
54 their types, therefore it is rather slow.
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
55
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
56 Examples of commands:
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
57
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
58 jabber:goim?screenname=testone@localhost&message=hi
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
59 jabber:gochat?room=TestRoom&server=conference.localhost
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
60 jabber:getinfo?screenname=testone@localhost
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
61 jabber:addbuddy?screenname=my friend
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
62
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
63 setstatus?status=away&message=don't disturb
25668
7897eda26d25 List getstatus and getstatusmessage in the purple-remote help output.
Paul Aurich <darkrain42@pidgin.im>
parents: 24836
diff changeset
64 getstatus
7897eda26d25 List getstatus and getstatusmessage in the purple-remote help output.
Paul Aurich <darkrain42@pidgin.im>
parents: 24836
diff changeset
65 getstatusmessage
15716
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
66 quit
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
67
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
68 PurpleAccountsFindConnected?name=&protocol=prpl-jabber
18885
dca0fedd1d8e fix a doc string typo
Ka-Hing Cheung <khc@pidgin.im>
parents: 18105
diff changeset
69 PurpleAccountsFindConnected(,prpl-jabber)
15716
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
70 """ % sys.argv[0]
23237
7ec42e06496f Import a patch (with changes) from Debian:
Ari Pollak <ari@debian.org>
parents: 22141
diff changeset
71 if (requested):
7ec42e06496f Import a patch (with changes) from Debian:
Ari Pollak <ari@debian.org>
parents: 22141
diff changeset
72 sys.exit(0)
7ec42e06496f Import a patch (with changes) from Debian:
Ari Pollak <ari@debian.org>
parents: 22141
diff changeset
73 else:
7ec42e06496f Import a patch (with changes) from Debian:
Ari Pollak <ari@debian.org>
parents: 22141
diff changeset
74 sys.exit(1)
15716
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
75
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
76 cpurple = CheckedObject(purple)
11187
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
77
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
78 urlregexp = r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?"
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
79
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
80 def extendlist(list, length, fill):
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
81 if len(list) < length:
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
82 return list + [fill] * (length - len(list))
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
83 else:
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
84 return list
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
85
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
86 def convert(value):
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
87 try:
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
88 return int(value)
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
89 except:
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
90 return value
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
91
11241
f62a71823fc3 [gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11187
diff changeset
92 def findaccount(accountname, protocolname):
f62a71823fc3 [gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11187
diff changeset
93 try:
f62a71823fc3 [gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11187
diff changeset
94 # prefer connected accounts
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
95 account = cpurple.PurpleAccountsFindConnected(accountname, protocolname)
11241
f62a71823fc3 [gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11187
diff changeset
96 return account
f62a71823fc3 [gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11187
diff changeset
97 except:
f62a71823fc3 [gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11187
diff changeset
98 # try to get any account and connect it
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
99 account = cpurple.PurpleAccountsFindAny(accountname, protocolname)
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
100 purple.PurpleAccountSetStatusVargs(account, "online", 1)
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
101 purple.PurpleAccountConnect(account)
11241
f62a71823fc3 [gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11187
diff changeset
102 return account
f62a71823fc3 [gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11187
diff changeset
103
f62a71823fc3 [gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11187
diff changeset
104
11187
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
105 def execute(uri):
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
106 match = re.match(urlregexp, uri)
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
107 protocol = match.group(2)
17399
4b33b14a5459 A conditional in purple_remote was missing a trailing colon.
Ethan Blanton <elb@pidgin.im>
parents: 17253
diff changeset
108 if protocol == "xmpp":
17253
278327221b51 Make purple-remote accept xmpp as a protocol
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16205
diff changeset
109 protocol = "jabber"
11187
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
110 if protocol is not None:
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
111 protocol = "prpl-" + protocol
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
112 command = match.group(5)
13774
470a932e79e7 [gaim-migrate @ 16184]
Richard Laager <rlaager@pidgin.im>
parents: 13767
diff changeset
113 paramstring = match.group(7)
11187
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
114 params = {}
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
115 if paramstring is not None:
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
116 for param in paramstring.split("&"):
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
117 key, value = extendlist(param.split("=",1), 2, "")
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
118 params[key] = urllib.unquote(value)
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
119
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
120 accountname = params.get("account", "")
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
121
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
122 if command == "goim":
11241
f62a71823fc3 [gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11187
diff changeset
123 account = findaccount(accountname, protocol)
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
124 conversation = cpurple.PurpleConversationNew(1, account, params["screenname"])
11187
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
125 if "message" in params:
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
126 im = cpurple.PurpleConversationGetImData(conversation)
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
127 purple.PurpleConvImSend(im, params["message"])
11187
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
128 return None
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
129
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
130 elif command == "gochat":
11241
f62a71823fc3 [gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11187
diff changeset
131 account = findaccount(accountname, protocol)
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
132 connection = cpurple.PurpleAccountGetConnection(account)
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
133 return purple.ServJoinChat(connection, params)
11187
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
134
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
135 elif command == "addbuddy":
11241
f62a71823fc3 [gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11187
diff changeset
136 account = findaccount(accountname, protocol)
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
137 return cpurple.PurpleBlistRequestAddBuddy(account, params["screenname"],
11187
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
138 params.get("group", ""), "")
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
139
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
140 elif command == "setstatus":
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
141 current = purple.PurpleSavedstatusGetCurrent()
13763
dc4815a8f4aa [gaim-migrate @ 16173]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13221
diff changeset
142
dc4815a8f4aa [gaim-migrate @ 16173]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13221
diff changeset
143 if "status" in params:
dc4815a8f4aa [gaim-migrate @ 16173]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13221
diff changeset
144 status_id = params["status"]
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
145 status_type = purple.PurplePrimitiveGetTypeFromId(status_id)
13763
dc4815a8f4aa [gaim-migrate @ 16173]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13221
diff changeset
146 else:
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
147 status_type = purple.PurpleSavedstatusGetType(current)
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
148 status_id = purple.PurplePrimitiveGetIdFromType(status_type)
13763
dc4815a8f4aa [gaim-migrate @ 16173]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13221
diff changeset
149
dc4815a8f4aa [gaim-migrate @ 16173]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13221
diff changeset
150 if "message" in params:
dc4815a8f4aa [gaim-migrate @ 16173]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13221
diff changeset
151 message = params["message"];
dc4815a8f4aa [gaim-migrate @ 16173]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13221
diff changeset
152 else:
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
153 message = purple.PurpleSavedstatusGetMessage(current)
13763
dc4815a8f4aa [gaim-migrate @ 16173]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13221
diff changeset
154
11187
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
155 if "account" in params:
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
156 accounts = [cpurple.PurpleAccountsFindAny(accountname, protocol)]
13763
dc4815a8f4aa [gaim-migrate @ 16173]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13221
diff changeset
157
dc4815a8f4aa [gaim-migrate @ 16173]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13221
diff changeset
158 for account in accounts:
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
159 status = purple.PurpleAccountGetStatus(account, status_id)
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
160 type = purple.PurpleStatusGetType(status)
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
161 purple.PurpleSavedstatusSetSubstatus(current, account, type, message)
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
162 purple.PurpleSavedstatusActivateForAccount(current, account)
11187
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
163 else:
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
164 accounts = purple.PurpleAccountsGetAllActive()
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
165 saved = purple.PurpleSavedstatusNew("", status_type)
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
166 purple.PurpleSavedstatusSetMessage(saved, message)
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
167 purple.PurpleSavedstatusActivate(saved)
11187
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
168
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
169 return None
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
170
18097
9304ace34e7b A patch from Norbert Buchmuller:
Norbert Buchmuller <norbi@nix.hu>
parents: 17399
diff changeset
171 elif command == "getstatus":
9304ace34e7b A patch from Norbert Buchmuller:
Norbert Buchmuller <norbi@nix.hu>
parents: 17399
diff changeset
172 current = purple.PurpleSavedstatusGetCurrent()
9304ace34e7b A patch from Norbert Buchmuller:
Norbert Buchmuller <norbi@nix.hu>
parents: 17399
diff changeset
173 status_type = purple.PurpleSavedstatusGetType(current)
9304ace34e7b A patch from Norbert Buchmuller:
Norbert Buchmuller <norbi@nix.hu>
parents: 17399
diff changeset
174 status_id = purple.PurplePrimitiveGetIdFromType(status_type)
9304ace34e7b A patch from Norbert Buchmuller:
Norbert Buchmuller <norbi@nix.hu>
parents: 17399
diff changeset
175 return status_id
9304ace34e7b A patch from Norbert Buchmuller:
Norbert Buchmuller <norbi@nix.hu>
parents: 17399
diff changeset
176
24836
fa1d0f63ea45 Patch from 'jfd' (whose trac user account no longer exists) to implement
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 23256
diff changeset
177 elif command == "getstatusmessage":
fa1d0f63ea45 Patch from 'jfd' (whose trac user account no longer exists) to implement
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 23256
diff changeset
178 current = purple.PurpleSavedstatusGetCurrent()
fa1d0f63ea45 Patch from 'jfd' (whose trac user account no longer exists) to implement
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 23256
diff changeset
179 return purple.PurpleSavedstatusGetMessage(current)
fa1d0f63ea45 Patch from 'jfd' (whose trac user account no longer exists) to implement
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 23256
diff changeset
180
11241
f62a71823fc3 [gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11187
diff changeset
181 elif command == "getinfo":
f62a71823fc3 [gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11187
diff changeset
182 account = findaccount(accountname, protocol)
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
183 connection = cpurple.PurpleAccountGetConnection(account)
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
184 return purple.ServGetInfo(connection, params["screenname"])
11241
f62a71823fc3 [gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents: 11187
diff changeset
185
11187
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
186 elif command == "quit":
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
187 return purple.PurpleCoreQuit()
11187
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
188
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
189 elif command == "uri":
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
190 return None
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
191
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
192 else:
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
193 match = re.match(r"(\w+)\s*\(([^)]*)\)", command)
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
194 if match is not None:
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
195 name = match.group(1)
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
196 argstr = match.group(2)
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
197 if argstr == "":
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
198 args = []
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
199 else:
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
200 args = argstr.split(",")
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
201 fargs = []
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
202 for arg in args:
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
203 fargs.append(convert(arg.strip()))
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
204 return purple.__getattr__(name)(*fargs)
11187
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
205 else:
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
206 # introspect the object to get parameter names and types
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
207 # this is slow because the entire introspection info must be downloaded
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
208 data = dbus.Interface(obj, "org.freedesktop.DBus.Introspectable").\
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
209 Introspect()
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
210 introspect = xml.dom.minidom.parseString(data).documentElement
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
211 for method in introspect.all("method"):
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
212 if command == method.getAttribute("name"):
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
213 methodparams = []
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
214 for arg in method.all("arg"):
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
215 if arg.getAttribute("direction") == "in":
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
216 value = params[arg.getAttribute("name")]
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
217 type = arg.getAttribute("type")
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
218 if type == "s":
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
219 methodparams.append(value)
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
220 elif type == "i":
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
221 methodparams.append(int(value))
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
222 else:
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
223 raise "Don't know how to handle type \"%s\"" % type
16205
397be242f4a4 Trac Ticket #149 from JensenDied
Richard Laager <rlaager@pidgin.im>
parents: 15987
diff changeset
224 return purple.__getattr__(command)(*methodparams)
15716
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
225 show_help()
11187
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
226
23256
35a4e2bbfa46 disapproval of revision '04ec200520788c834a933129aba557e5ce761a08'
Richard Laager <rlaager@pidgin.im>
parents: 23255
diff changeset
227 if len(sys.argv) == 1:
15716
128dcef5e4b3 Fix bug #1662186: "gaim-remote --help doesn't work" by showing the help for any invalid command.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
228 show_help()
23237
7ec42e06496f Import a patch (with changes) from Debian:
Ari Pollak <ari@debian.org>
parents: 22141
diff changeset
229 elif (sys.argv[1] == "--help" or sys.argv[1] == "-h"):
7ec42e06496f Import a patch (with changes) from Debian:
Ari Pollak <ari@debian.org>
parents: 22141
diff changeset
230 show_help(True)
20195
10848da5f7ed applied changes from c699de7eec5194554b5fcb885019835fb902d95a
Luke Schierer <lschiere@pidgin.im>
parents: 18885
diff changeset
231 elif (obj == None):
10848da5f7ed applied changes from c699de7eec5194554b5fcb885019835fb902d95a
Luke Schierer <lschiere@pidgin.im>
parents: 18885
diff changeset
232 print "No existing libpurple instance detected."
10848da5f7ed applied changes from c699de7eec5194554b5fcb885019835fb902d95a
Luke Schierer <lschiere@pidgin.im>
parents: 18885
diff changeset
233 sys.exit(1);
10848da5f7ed applied changes from c699de7eec5194554b5fcb885019835fb902d95a
Luke Schierer <lschiere@pidgin.im>
parents: 18885
diff changeset
234
11187
27beea38898f [gaim-migrate @ 13303]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff changeset
235 for arg in sys.argv[1:]:
13774
470a932e79e7 [gaim-migrate @ 16184]
Richard Laager <rlaager@pidgin.im>
parents: 13767
diff changeset
236 output = execute(arg)
470a932e79e7 [gaim-migrate @ 16184]
Richard Laager <rlaager@pidgin.im>
parents: 13767
diff changeset
237
470a932e79e7 [gaim-migrate @ 16184]
Richard Laager <rlaager@pidgin.im>
parents: 13767
diff changeset
238 if (output != None):
470a932e79e7 [gaim-migrate @ 16184]
Richard Laager <rlaager@pidgin.im>
parents: 13767
diff changeset
239 print output
470a932e79e7 [gaim-migrate @ 16184]
Richard Laager <rlaager@pidgin.im>
parents: 13767
diff changeset
240

mercurial