plugins/version.lua

Wed, 09 Dec 2009 13:55:58 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Wed, 09 Dec 2009 13:55:58 +0000
changeset 27
a4a6a33a34c1
child 29
0d275519eff4
permissions
-rw-r--r--

Add 'version' plugin to handle and generate version requests

27
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 local xmlns_version = "jabber:iq:version";
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 local function set_version(version_info)
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4 self.name = version_info.name;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5 self.version = version_info.version;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 self.platform = version_info.platform;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 end
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 function verse.plugins.version(stream)
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 stream.version = { set = set_version };
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 stream:hook("iq/"..xmlns_version, function (event)
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 if event.stanza.attr.type ~= "get" then return; end
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13 local reply = verse.reply(event.stanza)
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 :tag("query", { xmlns = xmlns_version });
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 if stream.version.name then
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 reply:tag("name"):text(tostring(stream.version.name)):up();
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 end
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 if stream.version.version then
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 reply:tag("version"):text(tostring(stream.version.version)):up()
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 end
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 if stream.version.platform then
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 reply:tag("os"):text(stream.version.platform);
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 end
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 end);
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 function stream:query_version(target_jid, callback)
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 callback = callback or function (version) return stream:event("version/response", version); end
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 stream:send_iq(verse.iq({ type = "get", to = target_jid })
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 :tag("query", { xmlns = xmlns_version }),
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30 function (reply)
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31 local query = reply:get_child("query", xmlns_version);
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 if query then
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33 local name = query:get_child("name");
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 local version = query:get_child("version");
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 local os = query:get_child("os");
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
36 callback({
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
37 name = name and name:get_text() or nil;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
38 version = version and version:get_text() or nil;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
39 platform = os and os:get_text() or nil;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40 });
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
41 else
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
42 local type, condition, text = reply:get_error();
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
43 callback({
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 error = true;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
45 condition = condition;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
46 text = text;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
47 type = type;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
48 });
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
49 end
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
50 end);
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
51 end
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
52
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
53 end

mercurial