examples/mc_remote.lua
author Myhailo Danylenko <isbear@ukrpost.net>
Sat, 28 Mar 2009 19:43:12 +0200
changeset 67 d33ca5572e91
permissions -rw-r--r--
Fully object forms interface (untested)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
67
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     1
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     2
local lm     = require 'lm'
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     3
local remote = require 'remote'
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     4
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     5
main.command ( 'remote',
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     6
	function ( args )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     7
		local who
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     8
		if args.t then
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     9
			who = args.t
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    10
		else
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    11
			who = main.full_jid ()
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    12
		end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    13
		local action = args[1]
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    14
		local conn   = lm.connection.bless ( main.connection () )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    15
		if action then
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    16
			remote.command ( conn, who, action,
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    17
				function ( form, submit, reject )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    18
					if not form then
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    19
						main.print_info ( who, ('Command %s completed'):format ( action ) )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    20
					else
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    21
						insert_form ( form, -- XXX
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    22
							function ( form )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    23
								submit ( form,
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    24
									function ()
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    25
										main.print_info ( who, ('Command %s completed'):format ( action ) )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    26
									end,
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    27
									function ( mesg )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    28
										main.print_info ( who, ('Command %s execution failed: %s'):format ( action, mesg ) )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    29
									end )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    30
							end,
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    31
							function ( form )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    32
								reject ( form,
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    33
									function ()
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    34
										main.print_info ( who, ('Command %s execution cancelled'):format ( action ) )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    35
									end,
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    36
									function ( mesg )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    37
										main.print_info ( who, ('Command %s execution cancellation failed: %s'):format ( action, mesg ) )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    38
									end )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    39
							end )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    40
					end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    41
				end,
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    42
				function ( mesg )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    43
					main.print_info ( who, ('Command %s execution failed: %s'):format ( action, mesg ) )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    44
				end )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    45
		else
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    46
			remote.list ( conn, who,
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    47
				function ( items )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    48
					local text = ''
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    49
					for index, item in ipairs ( items ) do
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    50
						text = text .. '\n - ' .. item.node
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    51
					end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    52
					if text ~= '' then
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    53
						main.print_info ( who, 'Available commands:' .. text )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    54
					else
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    55
						main.print_info ( who, 'No commands available.' )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    56
					end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    57
				end,
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    58
				function ( mesg )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    59
					main.print_info ( who, ("Remote commands list for %s failed: %s"):format ( who, mesg ) )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    60
				end )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    61
		end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    62
	end, true, 'jid' )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    63
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    64
commands_help['remote'] = "[-t target_jid] [remote_command]\n\nPrints list of available remote command or requests execution of specified command."
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    65
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    66
-- vim: se ts=4: --