diff options
| author | Remko Tronçon <git@el-tramo.be> | 2011-03-05 12:02:12 (GMT) | 
|---|---|---|
| committer | Remko Tronçon <git@el-tramo.be> | 2011-03-05 12:02:12 (GMT) | 
| commit | 4e0888a6e2350f06504d4c6a99e5a21fa51ee9bc (patch) | |
| tree | 3de7e764cc35810d097ca41ea965b4fcb1702db7 | |
| parent | f19d2718149f36fa017c64ad95a7fb3ce045347c (diff) | |
| download | swift-contrib-4e0888a6e2350f06504d4c6a99e5a21fa51ee9bc.zip swift-contrib-4e0888a6e2350f06504d4c6a99e5a21fa51ee9bc.tar.bz2 | |
Sluift: Added CollectVersions example.
| -rw-r--r-- | Sluift/Examples/CollectVersions.lua | 22 | ||||
| -rw-r--r-- | Sluift/Examples/Login.lua | 1 | ||||
| -rw-r--r-- | Sluift/sluift.cpp | 28 | 
3 files changed, 50 insertions, 1 deletions
| diff --git a/Sluift/Examples/CollectVersions.lua b/Sluift/Examples/CollectVersions.lua new file mode 100644 index 0000000..c93c8c8 --- /dev/null +++ b/Sluift/Examples/CollectVersions.lua @@ -0,0 +1,22 @@ +-- +-- 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, and collects statistics about +-- the server software of all contacts in your roster + +require "sluift" + +c = sluift.new_client(os.getenv("SLUIFT_JID"), os.getenv("SLUIFT_PASS")) +c:connect() + +versions = {} +for jid, _ in pairs(c:get_contacts()) do +	v = c:get_version(sluift.jid_domain(jid)) +	if v then versions[v["name"]] = (versions[v["name"]] or 0) + 1 end +end +for name, count in pairs(versions) do print(name .. ": " .. count) end + +c:disconnect() diff --git a/Sluift/Examples/Login.lua b/Sluift/Examples/Login.lua index c1f42d2..1733bb9 100644 --- a/Sluift/Examples/Login.lua +++ b/Sluift/Examples/Login.lua @@ -10,7 +10,6 @@  --   -- The following environment variables are used:  -- * SLUIFT_JID, SWIFT_PASS: JID and password to log in with --- * SLUIFT_OPTIONS: Client options to use (e.g. "{compress = false}")  -- * SLUIFT_DEBUG: Sets whether debugging should be turned on  require "sluift" diff --git a/Sluift/sluift.cpp b/Sluift/sluift.cpp index ffadc38..ca7d9ff 100644 --- a/Sluift/sluift.cpp +++ b/Sluift/sluift.cpp @@ -631,6 +631,30 @@ static int sluift_new_client(lua_State *L) {  	}  } +static int sluift_jid_to_bare(lua_State *L) { +	JID jid(std::string(luaL_checkstring(L, 1))); +	lua_pushstring(L, jid.toBare().toString().c_str()); +	return 1; +} + +static int sluift_jid_node(lua_State *L) { +	JID jid(std::string(luaL_checkstring(L, 1))); +	lua_pushstring(L, jid.getNode().c_str()); +	return 1; +} + +static int sluift_jid_domain(lua_State *L) { +	JID jid(std::string(luaL_checkstring(L, 1))); +	lua_pushstring(L, jid.getDomain().c_str()); +	return 1; +} + +static int sluift_jid_resource(lua_State *L) { +	JID jid(std::string(luaL_checkstring(L, 1))); +	lua_pushstring(L, jid.getResource().c_str()); +	return 1; +} +  static int sluift_sleep(lua_State *L) {  	try {  		eventLoop.runOnce(); @@ -672,6 +696,10 @@ static int sluift_newindex(lua_State *L) {  static const luaL_reg sluift_functions[] = {  	{"new_client", sluift_new_client}, +	{"jid_to_bare", sluift_jid_to_bare}, +	{"jid_node", sluift_jid_node}, +	{"jid_domain", sluift_jid_domain}, +	{"jid_resource", sluift_jid_resource},  	{"sleep", sluift_sleep},  	{NULL, NULL}  }; | 
 Swift
 Swift