examples/xep0060.lua
author Myhailo Danylenko <isbear@ukrpost.net>
Mon, 16 Mar 2009 18:54:16 +0200
changeset 34 8206d7cb1447
parent 27 92b254b64360
permissions -rw-r--r--
Args auto-parsing, use main.binding
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
26
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
     1
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
     2
-- SUBSCRIBER USE CASES
22
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     3
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     4
function pubsub_subscribe ( to, node )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     5
	local conn = lm.connection.bless ( main.connection () )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     6
	local jid = conn:jid():gsub ( '/.*', '' )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     7
	conn:send (
26
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
     8
		lm.message.create { mtype = 'iq-set', to = to, -- from = conn:jid (),
22
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     9
			pubsub = { xmlns = 'http://jabber.org/protocol/pubsub',
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    10
				subscribe = { node = node, jid = jid },
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    11
			},
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    12
		},
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    13
		function ( conn, mess )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    14
			local mtype, smtype = mess:type ()
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    15
			if smtype == 'result' then
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    16
				local s = mess:path ( 'pubsub', 'subscription' )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    17
				local info
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    18
				if s then
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    19
					local id = s:attribute ( 'subid' )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    20
					if not id then
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    21
						id = 'unspecified'
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    22
					end
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    23
					info = ('%s is now %s to node %s (id %s)'):format ( s:attribute ( 'jid' ), s:attribute ( 'subscription' ), s:attribute ( 'node' ), id )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    24
				else
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    25
					info = 'Subscription successful, but server supplied no info about it...'
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    26
				end
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    27
				main.print_info ( to, info )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    28
				return true
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    29
			elseif smtype == 'error' then
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    30
				main.print_info ( to, 'Error response for subscription request: ' .. mess:xml () ) -- FIXME
26
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    31
				-- XXX: handle configuration forms?
22
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    32
				return true
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    33
			else
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    34
				print ( 'Weird response for subscription request: ' .. mess:xml () )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    35
				return false
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    36
			end
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    37
		end )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    38
end
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    39
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    40
function pubsub_unsubscribe ( to, node )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    41
	local conn = lm.connection.bless ( main.connection () )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    42
	local jid = conn:jid():gsub ( '/.*', '' )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    43
	conn:send (
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    44
		lm.message.create { mtype = 'iq-set', to = to,
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    45
			pubsub = { xmlns = 'http://jabber.org/protocol/pubsub',
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    46
				unsubscribe = { node = node, jid = jid },
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    47
			},
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    48
		},
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    49
		function ( conn, mess )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    50
			local mtype, smtype = mess:type ()
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    51
			if smtype == 'result' then
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    52
				main.print_info ( to, 'Unsubscription successful' )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    53
				return true
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    54
			elseif smtype == 'error' then
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    55
				main.print_info ( to, 'Error response for unsubscription request: ' .. mess:xml () ) -- FIXME
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    56
				return true
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    57
			else
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    58
				print ( 'Weird response for unsubscription request: ' .. mess:xml () )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    59
				return false
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    60
			end
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    61
		end )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    62
end
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    63
26
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    64
-- I found no servers with subscription options support thus it is not implemented.
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    65
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    66
-- untested :(
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    67
function pubsub_retrieve ( to, node, handler, max, ids )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    68
	local items = { node = node, max_items = max }
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    69
	if ids then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    70
		items.item = { }
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    71
		for k, id in pairs ( ids ) do
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    72
			table.insert ( items.item, { id = id } )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    73
		end
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    74
	end
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    75
	local conn = lm.connection.bless ( main.connection () )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    76
	conn:send (
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    77
		lm.message.create { mtype = 'iq-set', to = to,
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    78
			pubsub = { xmlns = 'http://jabber.org/protocol/pubsub',
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    79
				items = items,
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    80
			},
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    81
		},
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    82
		function ( conn, mess )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    83
			local mtype, smtype = mess:type ()
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    84
			if smtype == 'result' then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    85
				local items = mess:path ( 'pubsub', 'items' )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    86
				if items then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    87
					local item = items:children ()
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    88
					while item do
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    89
						-- we cannot know, what item contains
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    90
						handler ( item )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    91
						item = item:next ()
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    92
					end
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    93
				end
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    94
				return true
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    95
			elseif smtype == 'error' then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    96
				main.print_info ( to, 'Error response for items retrieval request: ' .. mess:xml () ) -- FIXME
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    97
				return true
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    98
			else
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
    99
				print ( 'Weird response for items retrieval request: ' .. mess:xml () )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   100
				return false
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   101
			end
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   102
		end )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   103
end
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   104
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   105
-- OWNER USE CASES
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   106
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   107
-- node may be nil
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   108
function pubsub_create_node ( to, node )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   109
	local conn = lm.connection.bless ( main.connection () )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   110
	conn:send (
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   111
		lm.message.create { mtype = 'iq-set', to = to,
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   112
			pubsub = { xmlns = 'http://jabber.org/protocol/pubsub',
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   113
				create = { node = node },
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   114
			},
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   115
		},
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   116
		function ( conn, mess )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   117
			local mtype, smtype = mess:type ()
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   118
			if smtype == 'result' then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   119
				if node then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   120
					main.print_info ( to, 'Node ' .. node .. ' successfully created' )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   121
				else
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   122
					local create = mess:path ( 'pubsub', 'create' )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   123
					if create then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   124
						local nid = create:attribute ( 'node' )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   125
						main.print_info ( to, 'Node created, id ' .. (nid or 'unspecified') )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   126
					else
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   127
						main.print_info ( to, 'Node created, but no id provieded' )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   128
					end
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   129
				end
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   130
				return true
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   131
			elseif smtype == 'error' then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   132
				main.print_info ( to, 'Error response for node creation request: ' .. mess:xml () ) -- FIXME
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   133
				return true
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   134
			else
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   135
				print ( 'Weird response for node creation request: ' .. mess:xml () )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   136
				return false
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   137
			end
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   138
		end )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   139
end
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   140
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   141
function pubsub_delete_node ( to, node )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   142
	local conn = lm.connection.bless ( main.connection () )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   143
	conn:send (
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   144
		lm.message.create { mtype = 'iq-set', to = to,
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   145
			pubsub = { xmlns = 'http://jabber.org/protocol/pubsub#owner',
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   146
				delete = { node = node },
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   147
			},
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   148
		},
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   149
		function ( conn, mess )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   150
			local mtype, smtype = mess:type ()
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   151
			if smtype == 'result' then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   152
				main.print_info ( to, 'Node ' .. node .. ' successfully deleted' )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   153
				return true
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   154
			elseif smtype == 'error' then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   155
				main.print_info ( to, 'Error response for node deletion request: ' .. mess:xml () ) -- FIXME
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   156
				return true
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   157
			else
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   158
				print ( 'Weird response for node deletion request: ' .. mess:xml () )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   159
				return false
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   160
			end
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   161
		end )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   162
end
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   163
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   164
function pubsub_purge_node ( to, node )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   165
	local conn = lm.connection.bless ( main.connection () )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   166
	conn:send (
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   167
		lm.message.create { mtype = 'iq-set', to = to,
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   168
			pubsub = { xmlns = 'http://jabber.org/protocol/pubsub#owner',
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   169
				purge = { node = node },
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   170
			},
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   171
		},
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   172
		function ( conn, mess )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   173
			local mtype, smtype = mess:type ()
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   174
			if smtype == 'result' then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   175
				main.print_info ( to, 'Node ' .. node .. ' items successfully purged' )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   176
				return true
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   177
			elseif smtype == 'error' then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   178
				main.print_info ( to, 'Error response for node items purging request: ' .. mess:xml () ) -- FIXME
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   179
				return true
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   180
			else
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   181
				print ( 'Weird response for node items purging request: ' .. mess:xml () )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   182
				return false
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   183
			end
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   184
		end )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   185
end
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   186
22
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   187
function pubsub_configure_node ( to, node )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   188
	local conn = lm.connection.bless ( main.connection () )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   189
	conn:send (
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   190
		lm.message.create { mtype = 'iq-get', to = to,
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   191
			pubsub = { xmlns = 'http://jabber.org/protocol/pubsub#owner',
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   192
				configure = { node = node },
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   193
			},
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   194
		},
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   195
		function ( conn, mess )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   196
			local mtype, smtype = mess:type ()
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   197
			if smtype == 'result' then
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   198
				local x = mess:path ( 'pubsub', 'configure', 'x' )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   199
				if x then
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   200
					local fid = parse_form ( x )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   201
					forms[fid].send =
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   202
						function ( form )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   203
							conn:send (
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   204
								lm.message.create { mtype = 'iq-set', to = to,
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   205
									pubsub = { xmlns = 'http://jabber.org/protocol/pubsub#owner',
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   206
										configure = { node = node,
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   207
											x = { xmlns = 'jabber:x:data', type = 'submit',
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   208
												field = form.val,
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   209
											},
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   210
										},
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   211
									},
25
38c68c285e41 Form status improvements
Myhailo Danylenko <isbear@ukrpost.net>
parents: 24
diff changeset
   212
								},
38c68c285e41 Form status improvements
Myhailo Danylenko <isbear@ukrpost.net>
parents: 24
diff changeset
   213
								function ( conn, mess )
38c68c285e41 Form status improvements
Myhailo Danylenko <isbear@ukrpost.net>
parents: 24
diff changeset
   214
									local mt, st = mess:type ()
38c68c285e41 Form status improvements
Myhailo Danylenko <isbear@ukrpost.net>
parents: 24
diff changeset
   215
									if st == 'result' then
38c68c285e41 Form status improvements
Myhailo Danylenko <isbear@ukrpost.net>
parents: 24
diff changeset
   216
										main.print_info ( to, 'Now you can run /form del ' .. fid .. ' to delete form from list' )
38c68c285e41 Form status improvements
Myhailo Danylenko <isbear@ukrpost.net>
parents: 24
diff changeset
   217
										form.status = 'acquired'
38c68c285e41 Form status improvements
Myhailo Danylenko <isbear@ukrpost.net>
parents: 24
diff changeset
   218
									elseif st == 'error' then
38c68c285e41 Form status improvements
Myhailo Danylenko <isbear@ukrpost.net>
parents: 24
diff changeset
   219
										main.print_info ( to, 'Got non-successful response to form:\n' .. mess:xml () )
38c68c285e41 Form status improvements
Myhailo Danylenko <isbear@ukrpost.net>
parents: 24
diff changeset
   220
										form.status = 'rejected'
38c68c285e41 Form status improvements
Myhailo Danylenko <isbear@ukrpost.net>
parents: 24
diff changeset
   221
									else
38c68c285e41 Form status improvements
Myhailo Danylenko <isbear@ukrpost.net>
parents: 24
diff changeset
   222
										print ( 'Weird response to submitted form:\n' .. mess:xml () )
38c68c285e41 Form status improvements
Myhailo Danylenko <isbear@ukrpost.net>
parents: 24
diff changeset
   223
										form.status = 'unknown'
38c68c285e41 Form status improvements
Myhailo Danylenko <isbear@ukrpost.net>
parents: 24
diff changeset
   224
										return false
38c68c285e41 Form status improvements
Myhailo Danylenko <isbear@ukrpost.net>
parents: 24
diff changeset
   225
									end
38c68c285e41 Form status improvements
Myhailo Danylenko <isbear@ukrpost.net>
parents: 24
diff changeset
   226
									return true
38c68c285e41 Form status improvements
Myhailo Danylenko <isbear@ukrpost.net>
parents: 24
diff changeset
   227
								end )
38c68c285e41 Form status improvements
Myhailo Danylenko <isbear@ukrpost.net>
parents: 24
diff changeset
   228
							form.status = 'sent'
22
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   229
						end
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   230
					forms[fid].status = 'filling'
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   231
					main.print_info ( to, 'You have new form. To fill it, use /form ' .. fid .. ' fieldname value' )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   232
				else
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   233
					main.print_info ( to, 'Weird, no error and no node configuration form: ' .. mess:xml () )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   234
				end
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   235
				return true
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   236
			elseif smtype == 'error' then
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   237
				main.print_info ( to, 'Error response for node configuration request: ' .. mess:xml () ) -- FIXME
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   238
				return true
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   239
			else
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   240
				print ( 'Weird response for node configuration request: ' .. mess:xml () )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   241
				return false
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   242
			end
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   243
		end )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   244
end
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   245
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   246
function pubsub_list_subscriptions ( to, node )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   247
	local conn = lm.connection.bless ( main.connection () )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   248
	conn:send (
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   249
		lm.message.create { mtype = 'iq-get', to = to,
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   250
			pubsub = { xmlns = 'http://jabber.org/protocol/pubsub#owner',
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   251
				subscriptions = { node = node },
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   252
			},
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   253
		},
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   254
		function ( conn, mess )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   255
			local mtype, smtype = mess:type ()
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   256
			if smtype == 'result' then
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   257
				local s = mess:path ( 'pubsub', 'subscriptions' )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   258
				if s then
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   259
					local sub = s:children ()
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   260
					main.print_info ( to, "List of subscriptions for node " .. node )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   261
					while sub do
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   262
						local subid = sub:attribute ( 'subid' ) or 'unspecified'
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   263
						main.print_info ( to, ("%s is %s (id %s)"):format ( sub:attribute ( 'jid' ), sub:attribute ( 'subscription' ), subid ) )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   264
						sub = sub:next ()
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   265
					end
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   266
				else
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   267
					main.print_info ( to, 'Weird response to node subscription list request: ' .. mess:xml () )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   268
				end
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   269
				return true
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   270
			elseif smtype == 'error' then
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   271
				main.print_info ( to, 'Error response for node subscription list request: ' .. mess:xml () ) -- FIXME
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   272
				return true
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   273
			else
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   274
				print ( 'Weird response for node subscription list request: ' .. mess:xml () )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   275
				return false
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   276
			end
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   277
		end )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   278
end
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   279
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   280
function pubsub_modify_subscription ( to, node, who, state, id )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   281
	local conn = lm.connection.bless ( main.connection () )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   282
	conn:send (
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   283
		lm.message.create { mtype = 'iq-get', to = to,
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   284
			pubsub = { xmlns = 'http://jabber.org/protocol/pubsub#owner',
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   285
				subscriptions = { node = node,
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   286
					subscription = { jid = who, subscription = state, id = id },
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   287
				},
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   288
			},
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   289
		},
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   290
		function ( conn, mess )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   291
			local mtype, smtype = mess:type ()
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   292
			if smtype == 'result' then
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   293
				main.print_info ( to, ('Subscription of %s to %s is successfully set to %s (id %s)'):format ( who, node, state, id or 'unspecified' ) )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   294
				return true
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   295
			elseif smtype == 'error' then
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   296
				main.print_info ( to, 'Error response for node subscription list request: ' .. mess:xml () ) -- FIXME
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   297
				return true
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   298
			else
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   299
				print ( 'Weird response for node subscription list request: ' .. mess:xml () )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   300
				return false
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   301
			end
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   302
		end )
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   303
end
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   304
26
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   305
-- INTERFACE
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   306
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   307
main.command ( 'node',
22
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   308
	function ( args )
26
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   309
		local who, action, node = args.t, args[1], args[2]
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   310
		if not who then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   311
			who = main.current_buddy ()
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   312
		end
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   313
		if action == 'subscribe' then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   314
			pubsub_subscribe ( who, node )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   315
		elseif action == 'unsubscribe' then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   316
			pubsub_unsubscribe ( who, node )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   317
		elseif action == 'retrieve' or action == 'items' or action == 'get' then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   318
			pubsub_retrieve ( who, node,
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   319
				function ( item )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   320
					main.print_to ( who, item:xml () ) 
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   321
				end, args.m )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   322
		elseif action == 'create' or action == 'new' then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   323
			pubsub_create_node ( who, node )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   324
		elseif action == 'delete' or action == 'del' then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   325
			pubsub_delete_node ( who, node )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   326
		elseif action == 'purge' or action == 'del_items' then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   327
			pubsub_purge_node ( who, node )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   328
		elseif action:sub ( 1, 4 ) == 'conf' then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   329
			pubsub_configure_node ( who, node )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   330
		elseif action == 'subscriptions' or action == 'subscribers' then
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   331
			pubsub_list_subscriptions ( who, node )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   332
		elseif action == 'subscription' or action == 'modify' then -- XXX
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   333
			pubsub_modify_subscription ( args.t or main.current_buddy (), node, args[3], args[4], args[5] )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   334
		else
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   335
			print ( 'Error: unknown action' )
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   336
		end
34
8206d7cb1447 Args auto-parsing, use main.binding
Myhailo Danylenko <isbear@ukrpost.net>
parents: 27
diff changeset
   337
	end, true )
22
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   338
26
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   339
-- FIXME
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   340
commands_help['node']           = "[-t jid] [-m max_items] action [node_name]\n\nAction can be subscribe, unsubscribe, retrieve (items, get), create (new), delete (del), purge (del_items), configure (conf*), subscriptions (subscribers), subscription (modify?)"
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   341
--[[
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   342
commands_help['subscribe']      = "[-t jid] node_name\n\nSends pubsub subscription request to specified node of jid or current buddy."
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   343
commands_help['unsubscribe']    = "[-t jid] node_name\n\nSends pubsub unsubscription request to specified node of jid or current buddy."
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   344
commands_help['retrieve']       = "[-t jid] [-m max_items] node_name\n\nSends pubsub items retrieval request to specified node of jid or current buddy.\nNote, that we cannot know, how to deal with these itemss, so, raw xml will be printed as a result."
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   345
commands_help['create_node']    = "[-t jid] [node_name]\n\nSends pubsub node creation request to specified node of jid or current buddy. If node name is not specified, server can generate unique id for it, if supported."
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   346
commands_help['configure_node'] = "[-t jid] node_name\n\nSends pubsub node configuration request to specified node of jid or current buddy."
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   347
commands_help['delete_node']    = "[-t jid] node_name\n\nSends pubsub node deletion request to specified node of jid or current buddy."
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   348
commands_help['purge_node']     = "[-t jid] node_name\n\nSends pubsub node items purging request to specified node of jid or current buddy."
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   349
commands_help['subscriptions']  = "[-t jid] node_name\n\nSends pubsub subscription list request to specified node of jid or current buddy."
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   350
commands_help['subscription']   = "[-t jid] node_name subscriber_jid state [subscription_id]\n\nSends pubsub subscription modification request to change subscription state of 'subscriber_jid' to 'state'. Optional id is used when multiple subscriptions for one jid are available."
fc83934f9b8d Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 25
diff changeset
   351
--]]
22
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   352
6460b020825d Partial pubsub support managing
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   353
-- vim: se ts=4: --