diff options
| author | Remko Tronçon <git@el-tramo.be> | 2011-03-17 22:09:50 (GMT) | 
|---|---|---|
| committer | Remko Tronçon <git@el-tramo.be> | 2011-03-17 22:14:46 (GMT) | 
| commit | 5be2178d55246d22e079c05db848eb3ec50f1aa9 (patch) | |
| tree | 39def8589842ba92b809e6aa4d7f0e5f7cfcb38e | |
| parent | 9cd05402468a7df3588ee1b1a8e1bf118eb72302 (diff) | |
| download | swift-5be2178d55246d22e079c05db848eb3ec50f1aa9.zip swift-5be2178d55246d22e079c05db848eb3ec50f1aa9.tar.bz2 | |
Sluift: Added example script for removing unreachable contacts.
| -rw-r--r-- | Sluift/Examples/RemoveUnreachableContacts.lua | 37 | ||||
| -rw-r--r-- | Sluift/sluift.cpp | 6 | 
2 files changed, 40 insertions, 3 deletions
| diff --git a/Sluift/Examples/RemoveUnreachableContacts.lua b/Sluift/Examples/RemoveUnreachableContacts.lua new file mode 100644 index 0000000..90122df --- /dev/null +++ b/Sluift/Examples/RemoveUnreachableContacts.lua @@ -0,0 +1,37 @@ +-- +-- Copyright (c) 2010 Remko Tronçon +-- Licensed under the GNU General Public License v3. +-- See Documentation/Licenses/GPLv3.txt for more information. +-- + +-- This script logs into an XMPP server, iterates over all roster items, +-- and checks if their server is still alive. If not, the script asks you +-- whether it should remove the contact from your contact list. +--  +-- The following environment variables are used: +-- * SLUIFT_JID, SWIFT_PASS: JID and password to log in with +-- * SLUIFT_DEBUG: Sets whether debugging should be turned on + +require "sluift" +sluift.debug = os.getenv("SLUIFT_DEBUG") + +print "Connecting ..." +c = sluift.new_client(os.getenv("SLUIFT_JID"), os.getenv("SLUIFT_PASS")) +c:connect() + +print "Checking for unreachable contacts ..." +for jid, _ in pairs(c:get_contacts()) do +	_, err = c:get_version(sluift.jid_domain(jid), 10000) +	if err == "Remote server not found" or err == "Timeout" then +		print("Delete " .. jid .. " (" .. err .. ") ? [y/n/q]") +		answer = io.read() +		if answer == "y" then +			c:remove_contact(jid) +		elseif answer == "q" then +			break +		end +	end +end + +print "Done. Exiting ..." +c:disconnect() diff --git a/Sluift/sluift.cpp b/Sluift/sluift.cpp index abfde24..0545089 100644 --- a/Sluift/sluift.cpp +++ b/Sluift/sluift.cpp @@ -300,7 +300,7 @@ static int sluift_client_get_version(lua_State *L) {  		ResponseSink<SoftwareVersion> sink;  		GetSoftwareVersionRequest::ref request = GetSoftwareVersionRequest::create(std::string(luaL_checkstring(L, 2)), client->getClient()->getIQRouter()); -		request->onResponse.connect(boost::ref(sink)); +		boost::signals::scoped_connection c = request->onResponse.connect(boost::ref(sink));  		request->send();  		Watchdog watchdog(timeout, networkFactories.getTimerFactory()); @@ -580,7 +580,7 @@ static int sluift_client_add_contact(lua_State* L) {  			ResponseSink<RosterPayload> sink;  			SetRosterRequest::ref request = SetRosterRequest::create(roster, client->getClient()->getIQRouter()); -			request->onResponse.connect(boost::ref(sink)); +			boost::signals::scoped_connection c = request->onResponse.connect(boost::ref(sink));  			request->send();  			while (!sink.hasResponse()) {  				eventLoop.runUntilEvents(); @@ -609,7 +609,7 @@ static int sluift_client_remove_contact(lua_State* L) {  		roster->addItem(RosterItemPayload(JID(luaL_checkstring(L, 2)), "", RosterItemPayload::Remove));  		ResponseSink<RosterPayload> sink;  		SetRosterRequest::ref request = SetRosterRequest::create(roster, client->getClient()->getIQRouter()); -		request->onResponse.connect(boost::ref(sink)); +		boost::signals::scoped_connection c = request->onResponse.connect(boost::ref(sink));  		request->send();  		while (!sink.hasResponse()) {  			eventLoop.runUntilEvents(); | 
 Swift
 Swift