diff options
Diffstat (limited to 'protocols')
| -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") | 
