summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Sluift/Examples/AdHocCommands.lua')
-rw-r--r--Sluift/Examples/AdHocCommands.lua48
1 files changed, 48 insertions, 0 deletions
diff --git a/Sluift/Examples/AdHocCommands.lua b/Sluift/Examples/AdHocCommands.lua
new file mode 100644
index 0000000..9e83f0c
--- /dev/null
+++ b/Sluift/Examples/AdHocCommands.lua
@@ -0,0 +1,48 @@
+--[[
+ Copyright (c) 2013 Remko Tronçon
+ Licensed under the GNU General Public License v3.
+ See Documentation/Licenses/GPLv3.txt for more information.
+--]]
+
+--[[
+
+ Ad-hoc command example.
+
+ This script logs into an XMPP server, and executes a
+ multi-step ad-hoc command.
+
+ 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") or false
+
+c = sluift.new_client(os.getenv("SLUIFT_JID"), os.getenv("SLUIFT_PASS"))
+c:connect(function ()
+ to = sluift.jid.domain(os.getenv("SLUIFT_JID"))
+
+ -- Get the list of commands
+ commands = assert(c:get_disco_items{ to = to, disco_items = {
+ node = sluift.disco.features.COMMANDS }})
+ print(commands)
+
+ -- Get the initial form
+ result = assert(c:set_command{ to = to, command = {
+ action = 'execute', node = 'http://jabber.org/protocol/admin#get-user-roster'}})
+
+ -- Fill in the form
+ submission = result.form:create_submission()
+ submission.accountjid = os.getenv("SLUIFT_JID")
+
+ -- Submit the form
+ result = assert(c:set_command{ to = to, command = {
+ action = 'complete', node = 'http://jabber.org/protocol/admin#get-user-roster',
+ session_id = result.session_id, form = submission}})
+ for _, v in ipairs(result.form.roster.values) do
+ print(v)
+ end
+end)