summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEdwin Mons <edwin.mons@isode.com>2014-05-09 11:45:03 (GMT)
committerEdwin Mons <edwin.mons@isode.com>2014-05-12 13:06:20 (GMT)
commit15ccd713a988b8386d06ca9ea10910ae9f59ea5a (patch)
tree96ba6382a9f26c908efb56e8e58431a1090495c5 /Sluift/core.lua
parent634555e64572531fece2a955d1168a88c7979d09 (diff)
downloadswift-contrib-15ccd713a988b8386d06ca9ea10910ae9f59ea5a.zip
swift-contrib-15ccd713a988b8386d06ca9ea10910ae9f59ea5a.tar.bz2
Add sluift function create_form
The function send_mam_query needs an optional form. Created a generic form creation function, and made the pubsub configuration form function use that. Change-Id: I9e839b28df3916c1fd0b09d84a03cc521d1736ad
Diffstat (limited to 'Sluift/core.lua')
-rw-r--r--Sluift/core.lua33
1 files changed, 24 insertions, 9 deletions
diff --git a/Sluift/core.lua b/Sluift/core.lua
index 48b8a97..ecd3c5e 100644
--- a/Sluift/core.lua
+++ b/Sluift/core.lua
@@ -436,18 +436,39 @@ local function call(options)
end
local function read_file(file)
local f = io.open(file, 'rb')
local result = f:read('*all')
f:close()
return result
end
+_H = {
+ [[ Generate a form table, suitable for PubSubConfiguration and MAMQuery ]],
+ parameters = { {"fields", "The fields that will be converted into a form table"},
+ {"form_type", "If specified, add a form_type field with this value"},
+ {"type", "Form type, e.g. 'submit'"} }
+}
+local function create_form(fields, ...)
+ local options = parse_options({}, ...)
+ local result = { fields = {} }
+ for var, value in pairs(fields) do
+ result.fields[#result.fields+1] = { name = var, value = value }
+ end
+ if options.form_type then
+ result.fields[#result.fields+1] = { name = 'form_type', value = form_type }
+ end
+ if options.type then
+ result['type'] = type
+ end
+ return result
+end
+
--------------------------------------------------------------------------------
-- Metatables
--------------------------------------------------------------------------------
_H = {
[[ Client interface ]]
}
local Client = {
_with_prompt = function(client) return client:jid() end
@@ -803,26 +824,19 @@ for _, method in ipairs({'events', 'get_next_event', 'for_each_event'}) do
return node.client[method](node.client, options)
end
end
--------------------------------------------------------------------------------
-- PubSubNode
--------------------------------------------------------------------------------
local function pubsub_node_configuration_to_form(configuration)
- if not configuration then
- return
- end
- local fields = { {name = 'form_type', value = 'http://jabber.org/protocol/pubsub#node_config'} }
- for var, value in pairs(configuration) do
- fields[#fields+1] = { name = var, value = value }
- end
- return { type = "submit", fields = fields }
+ return create_form{configuration, form_type="http://jabber.org/protocol/pubsub#node_config", type="submit"}
end
function PubSubNode:list_items (options)
return self.client:get_disco_items(merge_tables({to = self.jid, disco_items = { node = self.node }}, options))
end
local simple_pubsub_node_queries = {
get_configuration = 'pubsub_owner_configure',
get_subscriptions = 'pubsub_subscriptions',
@@ -1012,11 +1026,12 @@ return {
register_get_by_type_index = register_get_by_type_index,
process_pubsub_event = process_pubsub_event,
tprint = tprint,
read_file = read_file,
disco = disco,
get_help = get_help,
help = help,
extra_help = extra_help,
copy = copy,
- with = with
+ with = with,
+ create_form = create_form
}