examples/iq_register.lua
author Myhailo Danylenko <isbear@ukrpost.net>
Sat, 28 Mar 2009 19:43:12 +0200
changeset 67 d33ca5572e91
parent 66 542f61e113cb
permissions -rw-r--r--
Fully object forms interface (untested)
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
67
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     6
local iq         = require 'iq'
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     7
local x_data     = require 'x_data'
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     8
local form_field = require 'form_field'
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     9
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    10
--
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    11
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    12
local F = { }
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    13
local M = { }
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    14
M.__index = M
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    15
67
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    16
function F.new ( args )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    17
	local form = {
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    18
		xmlns        = 'jabber:iq:register',
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    19
		ftype        = args.type or 'form',
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    20
		registered   = args.registered,
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    21
		-- XXX title
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    22
		instructions = args.instructions,
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    23
		x_data       = args.x_data,
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    24
		f            = { },
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    25
	}
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    26
	setmetatable ( form, M )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    27
	return form
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    28
end
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    29
67
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    30
function F.parse ( query )
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    31
	local instructions = query:child ( 'instructions' )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    32
	if instructions then
67
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    33
		instructions = instructions:value ()
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    34
	end
67
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    35
	
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    36
	local registered
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    37
	if query:child ( 'registered' ) then
67
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    38
		registered = true
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    39
	end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    40
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    41
	local x = query:child ( 'x' )
53
2162188b20cf Fixes to form handling
Myhailo Danylenko <isbear@ukrpost.net>
parents: 49
diff changeset
    42
	if x and x:attribute ( 'xmlns' ) == 'jabber:x:data' then
67
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    43
		return F.new { type = 'form', registered = registered, instructions = instructions, x_data = x_data.parse ( x ) }
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    44
	end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    45
67
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    46
	local form = F.new { type = 'form', registered = registered, instructions = instructions }
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    47
66
542f61e113cb Modularization, I
Myhailo Danylenko <isbear@ukrpost.net>
parents: 64
diff changeset
    48
	local field = query:child ()
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    49
	while field do
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    50
		local name  = field:name ()
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    51
		if name ~= 'instructions' and name ~= 'registered' then
67
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    52
			form:add ( name, { type = 'text-single', value = field:value () or '' } )
49
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
		field = field:next ()
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    55
	end
67
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    56
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    57
	return form
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    58
end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    59
67
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    60
function M.type ( form )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    61
	return form.ftype
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    62
end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    63
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    64
function M.desc ( form )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    65
	if form.x_data then
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    66
		return form.x_data:desc ()
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    67
	else
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    68
		return form.title, form.instructions
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    69
	end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    70
end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    71
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    72
function M.format ( form, root, format_as )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    73
	local ft = format_as or form:type ()
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    74
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    75
	if form.x_data then
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    76
		root.query = form.x_data:format ( { xmlns = 'jabber:iq:register' }, ft )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    77
	else
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    78
		root.query = { xmlns = 'jabber:iq:register' }
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    79
		for index, field in form:fields () do
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    80
			root.query[field:name ()] = field:value ()
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    81
		end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    82
	end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    83
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    84
	if ft == 'form' then
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    85
		local title, instructions = form:desc ()
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    86
		if instructions then
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    87
			root.query.instructions = { instructions }
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    88
		end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    89
		if form.registered then
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    90
			root.query.registered = { }
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    91
		end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    92
	end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    93
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    94
	return root
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    95
end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    96
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    97
function M.fields ( form )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    98
	if form.x_data then
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    99
		return form.x_data:fields ()
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   100
	else
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   101
		return ipairs ( form.f )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   102
	end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   103
end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   104
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   105
function M.add ( form, name, fld )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   106
	if form.x_data then
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   107
		return form.x_data:add ( name, fld )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   108
	else
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   109
		fld.var   = name
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   110
		fld.index = #form.f + 1
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   111
		local obj = form_field.new ( fld )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   112
		table.insert ( form.f, obj )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   113
		form.f[name] = obj
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   114
		return obj
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   115
	end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   116
end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   117
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   118
function M.field ( form, name )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   119
	if form.x_data then
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   120
		return form.x_data:field ( name )
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   121
	else
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   122
		return form.f[name]
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   123
	end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   124
end
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   125
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   126
function F.register ( conn, to, success, fail )
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   127
	iq.send ( conn, to, 'get',
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   128
		{
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   129
			query = { xmlns = 'jabber:iq:register' },
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   130
		},
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   131
		function ( mess )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   132
			local query = mess:child ( 'query' )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   133
			if query and query:attribute ( 'xmlns' ) == 'jabber:iq:register' then
67
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   134
				success ( F.parse ( query ),
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   135
					function ( form, success, fail )
67
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   136
						iq.send ( conn, to, 'set', form:format ( form, { }, 'submit' ), success , fail )
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   137
					end,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   138
					function ( form, success, fail )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   139
						success ()
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
			end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   142
		end, fail )
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
67
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   145
function F.unregister ( conn, to, success, fail )
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   146
	iq.send ( conn, to, 'set',
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   147
		{
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   148
			query = { xmlns = 'jabber:iq:register',
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   149
				remove = { },
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   150
			},
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   151
		},
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   152
		function ( mess )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   153
			success ()
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   154
		end,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   155
		function ( mesg, mess )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   156
			local query = mess:child ( 'query' )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   157
			if query and query:attribute ( 'xmlns' ) == 'jabber:iq:register' then
67
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   158
				success ( F.parse ( query ),
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   159
					function ( form, success, fail )
67
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   160
						iq.send ( conn, to, 'set', form:format ( form, { }, 'submit' ), success, fail )
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   161
					end,
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   162
					function ( form, success, fail )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   163
						success ()
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   164
					end )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   165
			else
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   166
				fail ( mesg )
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   167
			end
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   168
		end )
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
67
d33ca5572e91 Fully object forms interface (untested)
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
   171
return F
49
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   172
95f3bf77c598 Forms in modular way
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   173
-- vim: se ts=4: --