examples/disco.lua
author Myhailo Danylenko <isbear@ukrpost.net>
Wed, 28 Nov 2012 20:17:53 +0200
changeset 146 04d19c9c1196
parent 68 742878c74b8e
permissions -rw-r--r--
Fix module loading problem
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
44
bd66956cd397 Disco and remote in new way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     1
68
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     2
local lm    = require 'lm'
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     3
local disco = require 'lm.disco'
44
bd66956cd397 Disco and remote in new way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     4
68
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     5
main.command ( 'disco',
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     6
	function ( args )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     7
		local who
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     8
		local conn = lm.connection.bless ( main.connection () )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     9
		if args.t then
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    10
			who = args.t
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    11
		else
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    12
			who = main.full_jid ()
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    13
		end
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    14
		if args[1] == 'items' then
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    15
			local node = args[2]
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    16
			disco.items ( conn, who,
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    17
				function ( items )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    18
					local text = ''
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    19
					for index, item in ipairs ( items ) do
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    20
						text = text .. ("\n    [%s (%s)] %s"):format ( item.jid or '', item.node or '', item.name or '' )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    21
					end
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    22
					if text ~= '' then
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    23
						main.print_info ( who, ("Items service discovery result for %s (%s):%s"):format ( who, node or '', text ) )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    24
					else
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    25
						main.print_info ( who, ("No items in discovery result for %s (%s)"):format ( who, node or '' ) )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    26
					end
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    27
				end,
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    28
				function ( mesg )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    29
					main.print_info ( who, ("Items service discovery for %s (%s) failed: %s"):format ( who, node or '', mesg ) )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    30
				end, node )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    31
		else
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    32
			disco.info ( conn, who,
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    33
				function ( identities, features )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    34
					main.print_info ( who, ("Service info discovery result for %s:"):format ( who ) )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    35
					local text = ''
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    36
					for index, identity in ipairs ( identities ) do
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    37
						text = text .. ("\n    [%s (%s)] %s"):format ( identity.category or '', identity.type or '', identity.name or '' )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    38
					end
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    39
					if text ~= '' then
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    40
						main.print_info ( who, "  Identities:" .. text )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    41
					else
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    42
						main.print_info ( who, "  No identities" )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    43
					end
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    44
					text = ''
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    45
					for index, feature in ipairs ( features ) do
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    46
						text = text .. ("\n    [%s]"):format ( feature or '' )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    47
					end
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    48
					if text ~= '' then
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    49
						main.print_info ( who, "  Features:" .. text )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    50
					else
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    51
						main.print_info ( who, "  No features" )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    52
					end
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    53
				end,
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    54
				function ( mesg )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    55
					main.print_info ( who, ("Info service discovery for %s failed: %s"):format ( who, mesg ) )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    56
				end )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    57
		end
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    58
	end, true, 'jid' )
44
bd66956cd397 Disco and remote in new way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    59
68
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    60
commands_help['disco'] = "[-t target_jid] [info | items] [node]\n\nService discovery request.\nInfo is sent if omitted."
44
bd66956cd397 Disco and remote in new way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    61
bd66956cd397 Disco and remote in new way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    62
-- vim: se ts=4: --