Annotate

plugins/version.lua @ 394:c2e959b60c13

plugins.smacks: explicitly import luasocket which stops setting globals in new versions
author Kim Alvefur <zash@zash.se>
date Thu, 03 Sep 2015 21:46:57 +0200
parent 380:0891b4e27766
child 395:e86144a4eaa1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
250
a5ac643a7fd6 added local verse var to all plugins
mva <mva@mva.name>
parents: 218
diff changeset
1 local verse = require "verse";
a5ac643a7fd6 added local verse var to all plugins
mva <mva@mva.name>
parents: 218
diff changeset
2
27
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 local xmlns_version = "jabber:iq:version";
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4
29
0d275519eff4 verse.plugins.version: Fix for handling of version requests
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
5 local function set_version(self, version_info)
27
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 self.name = version_info.name;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 self.version = version_info.version;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 self.platform = version_info.platform;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 end
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 function verse.plugins.version(stream)
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 stream.version = { set = set_version };
29
0d275519eff4 verse.plugins.version: Fix for handling of version requests
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
13 stream:hook("iq/"..xmlns_version, function (stanza)
0d275519eff4 verse.plugins.version: Fix for handling of version requests
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
14 if stanza.attr.type ~= "get" then return; end
0d275519eff4 verse.plugins.version: Fix for handling of version requests
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
15 local reply = verse.reply(stanza)
27
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 :tag("query", { xmlns = xmlns_version });
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 if stream.version.name then
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 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
19 end
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 if stream.version.version then
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 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
22 end
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 if stream.version.platform then
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 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
25 end
29
0d275519eff4 verse.plugins.version: Fix for handling of version requests
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
26 stream:send(reply);
104
58305b983b1a verse.plugins.version: Return true when handling a version request
Matthew Wild <mwild1@gmail.com>
parents: 51
diff changeset
27 return true;
27
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 end);
380
0891b4e27766 Discard trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 250
diff changeset
29
27
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30 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
31 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
32 stream:send_iq(verse.iq({ type = "get", to = target_jid })
380
0891b4e27766 Discard trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 250
diff changeset
33 :tag("query", { xmlns = xmlns_version }),
27
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 function (reply)
51
d044a726fef0 plugins.version: Detect errors based on type attribute, rather than presence of query element
Matthew Wild <mwild1@gmail.com>
parents: 33
diff changeset
35 if reply.attr.type == "result" then
218
39af184385cd plugins.version: Use get_child_text() and fix traceback on empty iq-result reply.
Kim Alvefur <zash@zash.se>
parents: 104
diff changeset
36 local query = reply:get_child("query", xmlns_version);
39af184385cd plugins.version: Use get_child_text() and fix traceback on empty iq-result reply.
Kim Alvefur <zash@zash.se>
parents: 104
diff changeset
37 local name = query and query:get_child_text("name");
39af184385cd plugins.version: Use get_child_text() and fix traceback on empty iq-result reply.
Kim Alvefur <zash@zash.se>
parents: 104
diff changeset
38 local version = query and query:get_child_text("version");
39af184385cd plugins.version: Use get_child_text() and fix traceback on empty iq-result reply.
Kim Alvefur <zash@zash.se>
parents: 104
diff changeset
39 local os = query and query:get_child_text("os");
27
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40 callback({
218
39af184385cd plugins.version: Use get_child_text() and fix traceback on empty iq-result reply.
Kim Alvefur <zash@zash.se>
parents: 104
diff changeset
41 name = name;
39af184385cd plugins.version: Use get_child_text() and fix traceback on empty iq-result reply.
Kim Alvefur <zash@zash.se>
parents: 104
diff changeset
42 version = version;
39af184385cd plugins.version: Use get_child_text() and fix traceback on empty iq-result reply.
Kim Alvefur <zash@zash.se>
parents: 104
diff changeset
43 platform = os;
27
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 });
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
45 else
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
46 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
47 callback({
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
48 error = true;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
49 condition = condition;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
50 text = text;
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
51 type = type;
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
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
54 end);
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
55 end
33
4581b2e61429 plugins.version: Return true on module load to indicate load success
Matthew Wild <mwild1@gmail.com>
parents: 29
diff changeset
56 return true;
27
a4a6a33a34c1 Add 'version' plugin to handle and generate version requests
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
57 end