diff options
Diffstat (limited to 'Sluift/boot.lua')
-rw-r--r-- | Sluift/boot.lua | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/Sluift/boot.lua b/Sluift/boot.lua index e81257a..2505736 100644 --- a/Sluift/boot.lua +++ b/Sluift/boot.lua @@ -173,13 +173,25 @@ for method, event_type in pairs({messages = 'message', pubsub_events = 'pubsub'} end end --- Register get_* convenience methods for some type of queries -for _, query_type in ipairs({'software_version', 'disco_items', 'xml', 'dom', 'vcard'}) do - Client['get_' .. query_type] = function (client, options) - options = options or {} - if type(options) ~= 'table' then error('Invalid options: ' .. options) end - options['query'] = merge_tables({_type = query_type}, options['query'] or {}) - return client:get(options) +-- +-- Register get_* and set_* convenience methods for some type of queries +-- +-- Example usages: +-- client:get_software_version{to = 'alice@wonderland.lit'} +-- client:set_command{to = 'alice@wonderland.lit', command = { type = 'execute', node = 'uptime' }} +-- +local get_set_shortcuts = { + get = {'software_version', 'disco_items', 'xml', 'dom', 'vcard'}, + set = {'command'} +} +for query_action, query_types in pairs(get_set_shortcuts) do + for _, query_type in ipairs(query_types) do + Client[query_action .. '_' .. query_type] = function (client, options) + options = options or {} + if type(options) ~= 'table' then error('Invalid options: ' .. options) end + options['query'] = merge_tables({_type = query_type}, options[query_type] or {}) + return client[query_action](client, options) + end end end @@ -403,6 +415,7 @@ end local disco = { features = { DISCO_INFO = 'http://jabber.org/protocol/disco#info', + COMMANDS = 'http://jabber.org/protocol/commands', USER_LOCATION = 'http://jabber.org/protocol/geoloc', USER_TUNE = 'http://jabber.org/protocol/tune', USER_AVATAR_METADATA = 'urn:xmpp:avatar:metadata', |