examples/iq_register.lua
author Myhailo Danylenko <isbear@ukrpost.net>
Fri, 27 Mar 2009 12:06:19 +0200
changeset 66 542f61e113cb
parent 64 bf7521ed96eb
child 67 d33ca5572e91
permissions -rw-r--r--
Modularization, I * activity * attention * avatar * disco * evil * geoloc * ibb * iq * mood * oob * ping * pubsub * tune * mpd * pep
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     1
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     2
-- IN-BAND REGISTRATION (XEP-0077)
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     3
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     4
-- library
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     5
66
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents: 64
diff changeset
     6
local lm     = require 'lm'
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents: 64
diff changeset
     7
local iq     = require 'iq'
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents: 64
diff changeset
     8
--local x_data =
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     9
require 'x_data'
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    10
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    11
-- public
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    12
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    13
iq_register = { }
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    14
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    15
function iq_register.parse ( query )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    16
	local form  = { xmlns = 'jabber:iq:register', type = 'form' }
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    17
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    18
	local instructions = query:child ( 'instructions' )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    19
	if instructions then
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    20
		form.instructions = instructions:value ()
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    21
	end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    22
	-- XXX how it can be mapped to common form?
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    23
	--     and needs it be supplied?
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    24
	if query:child ( 'registered' ) then
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    25
		form.registered = true
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    26
	end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    27
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    28
	local x = query:child ( 'x' )
53
2162188b20cf Fixes to form handling
Myhailo Danylenko <isbear@ukrpost.net>
parents: 49
diff changeset
    29
	if x and x:attribute ( 'xmlns' ) == 'jabber:x:data' then
2162188b20cf Fixes to form handling
Myhailo Danylenko <isbear@ukrpost.net>
parents: 49
diff changeset
    30
		form = x_data.parse ( x )
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    31
		local format = form.format
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    32
		form.format =
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    33
			function ( form, root )
53
2162188b20cf Fixes to form handling
Myhailo Danylenko <isbear@ukrpost.net>
parents: 49
diff changeset
    34
				root.query = format ( form, { xmlns = 'jabber:iq:register' } )
2162188b20cf Fixes to form handling
Myhailo Danylenko <isbear@ukrpost.net>
parents: 49
diff changeset
    35
				return root
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    36
			end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    37
		return form
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    38
	end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    39
66
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents: 64
diff changeset
    40
	local field = query:child ()
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    41
	while field do
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    42
		local name  = field:name ()
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    43
		if name ~= 'instructions' and name ~= 'registered' then
53
2162188b20cf Fixes to form handling
Myhailo Danylenko <isbear@ukrpost.net>
parents: 49
diff changeset
    44
			table.insert ( form, { type = 'text-single', var = name, value = field:value () or '' } )
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    45
		end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    46
		field = field:next ()
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    47
	end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    48
	form.format =
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    49
		function ( form, root )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    50
			root.query = { xmlns = 'jabber:iq:register' }
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    51
			for index, field in ipairs ( form ) do
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    52
				root.query[field.var] = field.value
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    53
			end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    54
			return root
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    55
		end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    56
	return form
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    57
end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    58
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    59
function iq_register.register ( conn, to, success, fail )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    60
	iq.send ( conn, to, 'get',
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    61
		{
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    62
			query = { xmlns = 'jabber:iq:register' },
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    63
		},
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    64
		function ( mess )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    65
			local query = mess:child ( 'query' )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    66
			if query and query:attribute ( 'xmlns' ) == 'jabber:iq:register' then
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    67
				success ( iq_register.parse ( query ),
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    68
					function ( form, success, fail )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    69
						form.type = 'submit' -- XXX
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    70
						iq.send ( conn, to, 'set', form.format ( form, { } ), success , fail )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    71
					end,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    72
					function ( form, success, fail )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    73
						success ()
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    74
					end )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    75
			end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    76
		end, fail )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    77
end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    78
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    79
function iq_register.unregister ( conn, to, success, fail )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    80
	iq.send ( conn, to, 'set',
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    81
		{
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    82
			query = { xmlns = 'jabber:iq:register',
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    83
				remove = { },
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    84
			},
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    85
		},
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    86
		function ( mess )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    87
			success ()
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    88
		end,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    89
		function ( mesg, mess )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    90
			local query = mess:child ( 'query' )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    91
			if query and query:attribute ( 'xmlns' ) == 'jabber:iq:register' then
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    92
				success ( iq_register.parse ( query ),
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    93
					function ( form, success, fail )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    94
						form.type = 'submit' -- XXX
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    95
						iq.send ( conn, to, 'set', form.format ( form, { } ), success, fail )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    96
					end,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    97
					function ( form, success, fail )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    98
						success ()
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    99
					end )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   100
			else
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   101
				fail ( mesg )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   102
			end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   103
		end )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   104
end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   105
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   106
-- mcabber
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   107
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   108
main.command ( 'register',
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   109
	function ( args )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   110
		local who
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   111
		if args and args ~= '' then
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   112
			who = args
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   113
		else
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   114
			who = main.full_jid ()
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   115
		end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   116
		iq_register.register ( lm.connection.bless ( main.connection () ), who,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   117
			function ( form, submit, reject )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   118
				local id = #forms + 1
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   119
				forms[id] = {
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   120
					form   = form,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   121
					submit =
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   122
						function ( form )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   123
							submit ( form,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   124
								function ()
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   125
									main.print_info ( who, 'Successfully registered' )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   126
								end,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   127
								function ( mesg )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   128
									main.print_info ( who, 'Registration failed: ' .. mesg )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   129
								end )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   130
						end,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   131
					reject =
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   132
						function ( form )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   133
							reject ( form,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   134
								function ()
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   135
									main.print_info ( who, 'Registration cancelled' )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   136
								end,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   137
								function ( mesg )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   138
									main.print_info ( who, 'Registration cancellation failed: ' .. mesg )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   139
								end )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   140
						end,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   141
				}
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   142
				print ( 'You have new form ' .. id )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   143
			end,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   144
			function ( mesg )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   145
				main.print_info ( who, 'Registration failed: ' .. mesg )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   146
			end )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   147
	end, false, 'jid' )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   148
main.command ( 'cancel',
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   149
	function ( args )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   150
		local who
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   151
		if args and args ~= '' then
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   152
			who = args
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   153
		else
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   154
			who = main.full_jid ()
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   155
		end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   156
		iq_register.unregister ( lm.connection.bless ( main.connection () ), who,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   157
			function ( form, submit, reject )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   158
				if not form then
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   159
					main.print_info ( who, 'Successfully unregistered' )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   160
				else
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   161
					local id = #forms + 1
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   162
					forms[id] = {
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   163
						form   = form,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   164
						submit =
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   165
							function ( form )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   166
								submit ( form,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   167
									function ()
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   168
										main.print_info ( who, 'Successfully unregistered' )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   169
									end,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   170
									function ( mesg )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   171
										main.print_info ( who, 'Unregistrering failed: ' .. mesg )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   172
									end )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   173
							end,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   174
						reject =
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   175
							function ( form )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   176
								reject ( form,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   177
									function ()
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   178
										main.print_info ( who, 'Unregistration cancelled' )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   179
									end,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   180
									function ( mesg )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   181
										main.print_info ( who, 'Unregistration cancellation failed: ' .. mesg )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   182
									end )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   183
							end,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   184
					}
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   185
					print ( 'You have new form ' .. id )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   186
				end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   187
			end,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   188
			function ( mesg )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   189
				main.print_info ( who, 'Unregistering failed: ' .. mesg )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   190
			end )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   191
	end, false, 'jid' )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   192
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   193
commands_help['register'] = "[jid]\n\nSends registration request to jid (or current buddy). You, probably, then will need to fill and send some form."
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   194
commands_help['cancel'] = "[jid]\n\nSends registration cancellation request to jid (or current buddy). May require a form filling."
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   195
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   196
-- vim: se ts=4: --