diff options
-rw-r--r-- | protocols/skype/README | 2 | ||||
-rw-r--r-- | protocols/skype/skype.c | 8 | ||||
-rw-r--r-- | protocols/skype/skyped.py | 16 | ||||
-rw-r--r-- | protocols/skype/t/groupchat-leave-bitlbee.mock | 11 | ||||
-rw-r--r-- | protocols/skype/t/groupchat-leave-skyped.mock | 63 | ||||
-rwxr-xr-x | protocols/skype/test.py | 3 |
6 files changed, 92 insertions, 11 deletions
diff --git a/protocols/skype/README b/protocols/skype/README index 2e45727f..b9f22481 100644 --- a/protocols/skype/README +++ b/protocols/skype/README @@ -30,7 +30,7 @@ not..) == Requirements -* Skype >= 1.4.0.99. The latest version I've tested is 2.2.0.35. +* Skype >= 1.4.0.99. The latest version I've tested is 4.1.0.20. * BitlBee >= 3.0. The latest version I've tested is @BITLBEE_VERSION@. Use old versions (see the NEWS file about which one) if you have older BitlBee installed. diff --git a/protocols/skype/skype.c b/protocols/skype/skype.c index 58a1c415..f6c0a261 100644 --- a/protocols/skype/skype.c +++ b/protocols/skype/skype.c @@ -1014,7 +1014,7 @@ static void skype_parse_chat(struct im_connection *ic, char *line) g_free(sd->adder); sd->adder = NULL; } - } else if (!strncmp(info, "MEMBERS ", 8)) { + } else if (!strncmp(info, "MEMBERS ", 8) || !strncmp(info, "ACTIVEMEMBERS ", 14) ) { info += 8; gc = bee_chat_by_title(ic->bee, ic, id); /* Hack! We set ->data to TRUE @@ -1219,8 +1219,12 @@ gboolean skype_start_stream(struct im_connection *ic) skype_printf(ic, "SET USERSTATUS ONLINE\n"); /* Auto join to bookmarked chats if requested.*/ - if (set_getbool(&ic->acc->set, "auto_join")) + if (set_getbool(&ic->acc->set, "auto_join")) { skype_printf(ic, "SEARCH BOOKMARKEDCHATS\n"); + skype_printf(ic, "SEARCH ACTIVECHATS\n"); + skype_printf(ic, "SEARCH MISSEDCHATS\n"); + skype_printf(ic, "SEARCH RECENTCHATS\n"); + } return st; } diff --git a/protocols/skype/skyped.py b/protocols/skype/skyped.py index 88588d96..86b1e96a 100644 --- a/protocols/skype/skyped.py +++ b/protocols/skype/skyped.py @@ -128,7 +128,7 @@ def send(sock, txt, tries=10): if hasgobject: if not options.conn: return try: - sock.sendall(txt) + done = sock.sendall(txt) except socket.error as s: dprint("Warning, sending '%s' failed (%s)." % (txt, s)) options.conn.close() @@ -138,7 +138,7 @@ def send(sock, txt, tries=10): if not options.conn: break if wait_for_lock(options.lock, 3, 10, "socket send"): try: - if options.conn: sock.sendall(txt) + if options.conn: done = sock.sendall(txt) options.lock.release() except socket.error as s: options.lock.release() @@ -253,13 +253,13 @@ def dprint(msg): from time import strftime global options - now = strftime("%Y-%m-%d %H:%M:%S") - if options.debug: + import inspect + prefix = strftime("[%Y-%m-%d %H:%M:%S]") + " %s:%d" % inspect.stack()[1][1:3] sanitized = msg try: - print now + ": " + msg + print prefix + ": " + msg except Exception, s: try: sanitized = msg.encode("ascii", "backslashreplace") @@ -268,11 +268,11 @@ def dprint(msg): sanitized = "hex [" + msg.encode("hex") + "]" except Error, s: sanitized = "[unable to print debug message]" - print now + "~=" + sanitized + print prefix + "~=" + sanitized if options.log: sock = open(options.log, "a") - sock.write("%s skyped: %s\n" % (now, sanitized)) + sock.write(prefix + ": " + sanitized) sock.close() sys.stdout.flush() @@ -467,7 +467,7 @@ def main(args=None): options.buf = None if not os.path.exists(options.config): - parser.error(( "Can't find configuration file at '%s'." + parser.error(( "Can't find configuration file at '%s'. " "Use the -c option to specify an alternate one." )% options.config) cfgpath = options.config diff --git a/protocols/skype/t/groupchat-leave-bitlbee.mock b/protocols/skype/t/groupchat-leave-bitlbee.mock new file mode 100644 index 00000000..36447cee --- /dev/null +++ b/protocols/skype/t/groupchat-leave-bitlbee.mock @@ -0,0 +1,11 @@ +>> NOTICE AUTH +<< NICK alice +<< USER alice alice localhost :Alice +>> PRIVMSG &bitlbee +<< PRIVMSG &bitlbee :account add skype alice foo +<< PRIVMSG &bitlbee :account skype set skypeconsole_receive true +<< PRIVMSG &bitlbee :account skype on +>> JOIN :##cecil/$bob;4d8cc9965791 +>> 353 alice = ##cecil/$bob;4d8cc9965791 :@alice bob cecil @root +<< PART ##cecil/$bob;4d8cc9965791 +>> PRIVMSG &bitlbee :alice: CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS UNSUBSCRIBED diff --git a/protocols/skype/t/groupchat-leave-skyped.mock b/protocols/skype/t/groupchat-leave-skyped.mock new file mode 100644 index 00000000..86150d1c --- /dev/null +++ b/protocols/skype/t/groupchat-leave-skyped.mock @@ -0,0 +1,63 @@ +>> SEARCH GROUPS CUSTOM +<< GROUPS 48, 49 +>> SEARCH FRIENDS +<< USERS echo123, bob, cecil +>> SET USERSTATUS ONLINE +<< USERSTATUS ONLINE +>> SET USERSTATUS ONLINE +<< USERSTATUS ONLINE +>> GET USER echo123 ONLINESTATUS +<< USER echo123 ONLINESTATUS ONLINE +>> GET USER echo123 FULLNAME +<< USER echo123 FULLNAME Echo / Sound Test Service +>> GET USER bob ONLINESTATUS +<< USER bob ONLINESTATUS OFFLINE +>> GET USER bob FULLNAME +<< USER bob FULLNAME Bob +>> GET USER cecil ONLINESTATUS +<< USER cecil ONLINESTATUS OFFLINE +>> GET USER cecil FULLNAME +<< USER cecil FULLNAME Cecil +<< CHAT #cecil/$bob;4d8cc9965791c6b9 NAME #cecil/$bob;4d8cc9965791c6b9 +<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED +<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED +<< CHATMEMBER 186 ROLE USER +<< CHAT #cecil/$bob;4d8cc9965791c6b9 MYROLE USER +<< CHAT #cecil/$bob;4d8cc9965791c6b9 MEMBERS bob cecil alice +<< CHAT #cecil/$bob;4d8cc9965791c6b9 FRIENDLYNAME bob, cecil +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob alice +<< CHAT #cecil/$bob;4d8cc9965791c6b9 TIMESTAMP 1358276196 +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob +<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC +<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS MULTI_SUBSCRIBED +<< CHATMESSAGE 188 STATUS RECEIVED +>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob +>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC +<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC +>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob +>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC +<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC +>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ADDER bob +>> GET CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC +<< CHAT #cecil/$bob;4d8cc9965791c6b9 TOPIC +>> GET CHATMESSAGE 188 FROM_HANDLE +<< CHATMESSAGE 188 FROM_HANDLE bob +>> GET CHATMESSAGE 188 BODY +<< CHATMESSAGE 188 BODY +>> GET CHATMESSAGE 188 TYPE +<< CHATMESSAGE 188 TYPE ADDEDMEMBERS +>> GET CHATMESSAGE 188 CHATNAME +<< CHATMESSAGE 188 CHATNAME #cecil/$bob;4d8cc9965791c6b9 +<< CHATMESSAGE 189 STATUS READ +<< CHATMESSAGE 189 STATUS READ +<< CHATMEMBER 186 IS_ACTIVE TRUE +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob cecil alice +<< CHATMESSAGE 190 STATUS SENT +>> ALTER CHAT #cecil/$bob;4d8cc9965791c6b9 LEAVE +<< ALTER CHAT LEAVE +<< CHAT #cecil/$bob;4d8cc9965791c6b9 MEMBERS bob cecil +<< CHAT #cecil/$bob;4d8cc9965791c6b9 ACTIVEMEMBERS bob cecil +<< CHAT #cecil/$bob;4d8cc9965791c6b9 STATUS UNSUBSCRIBED diff --git a/protocols/skype/test.py b/protocols/skype/test.py index 632ae124..63652f76 100755 --- a/protocols/skype/test.py +++ b/protocols/skype/test.py @@ -109,6 +109,9 @@ class Test(unittest.TestCase): def testGroupchatInvite(self): self.mock("groupchat-invite") + def testGroupchatLeave(self): + self.mock("groupchat-leave") + def testCalledYes(self): self.mock("called-yes") |