examples/iq_register.lua
changeset 68 742878c74b8e
parent 67 d33ca5572e91
child 69 ab6d4ee8974c
--- a/examples/iq_register.lua	Sat Mar 28 19:43:12 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,173 +0,0 @@
-
--- IN-BAND REGISTRATION (XEP-0077)
-
--- library
-
-local iq         = require 'iq'
-local x_data     = require 'x_data'
-local form_field = require 'form_field'
-
---
-
-local F = { }
-local M = { }
-M.__index = M
-
-function F.new ( args )
-	local form = {
-		xmlns        = 'jabber:iq:register',
-		ftype        = args.type or 'form',
-		registered   = args.registered,
-		-- XXX title
-		instructions = args.instructions,
-		x_data       = args.x_data,
-		f            = { },
-	}
-	setmetatable ( form, M )
-	return form
-end
-
-function F.parse ( query )
-	local instructions = query:child ( 'instructions' )
-	if instructions then
-		instructions = instructions:value ()
-	end
-	
-	local registered
-	if query:child ( 'registered' ) then
-		registered = true
-	end
-
-	local x = query:child ( 'x' )
-	if x and x:attribute ( 'xmlns' ) == 'jabber:x:data' then
-		return F.new { type = 'form', registered = registered, instructions = instructions, x_data = x_data.parse ( x ) }
-	end
-
-	local form = F.new { type = 'form', registered = registered, instructions = instructions }
-
-	local field = query:child ()
-	while field do
-		local name  = field:name ()
-		if name ~= 'instructions' and name ~= 'registered' then
-			form:add ( name, { type = 'text-single', value = field:value () or '' } )
-		end
-		field = field:next ()
-	end
-
-	return form
-end
-
-function M.type ( form )
-	return form.ftype
-end
-
-function M.desc ( form )
-	if form.x_data then
-		return form.x_data:desc ()
-	else
-		return form.title, form.instructions
-	end
-end
-
-function M.format ( form, root, format_as )
-	local ft = format_as or form:type ()
-
-	if form.x_data then
-		root.query = form.x_data:format ( { xmlns = 'jabber:iq:register' }, ft )
-	else
-		root.query = { xmlns = 'jabber:iq:register' }
-		for index, field in form:fields () do
-			root.query[field:name ()] = field:value ()
-		end
-	end
-
-	if ft == 'form' then
-		local title, instructions = form:desc ()
-		if instructions then
-			root.query.instructions = { instructions }
-		end
-		if form.registered then
-			root.query.registered = { }
-		end
-	end
-
-	return root
-end
-
-function M.fields ( form )
-	if form.x_data then
-		return form.x_data:fields ()
-	else
-		return ipairs ( form.f )
-	end
-end
-
-function M.add ( form, name, fld )
-	if form.x_data then
-		return form.x_data:add ( name, fld )
-	else
-		fld.var   = name
-		fld.index = #form.f + 1
-		local obj = form_field.new ( fld )
-		table.insert ( form.f, obj )
-		form.f[name] = obj
-		return obj
-	end
-end
-
-function M.field ( form, name )
-	if form.x_data then
-		return form.x_data:field ( name )
-	else
-		return form.f[name]
-	end
-end
-
-function F.register ( conn, to, success, fail )
-	iq.send ( conn, to, 'get',
-		{
-			query = { xmlns = 'jabber:iq:register' },
-		},
-		function ( mess )
-			local query = mess:child ( 'query' )
-			if query and query:attribute ( 'xmlns' ) == 'jabber:iq:register' then
-				success ( F.parse ( query ),
-					function ( form, success, fail )
-						iq.send ( conn, to, 'set', form:format ( form, { }, 'submit' ), success , fail )
-					end,
-					function ( form, success, fail )
-						success ()
-					end )
-			end
-		end, fail )
-end
-
-function F.unregister ( conn, to, success, fail )
-	iq.send ( conn, to, 'set',
-		{
-			query = { xmlns = 'jabber:iq:register',
-				remove = { },
-			},
-		},
-		function ( mess )
-			success ()
-		end,
-		function ( mesg, mess )
-			local query = mess:child ( 'query' )
-			if query and query:attribute ( 'xmlns' ) == 'jabber:iq:register' then
-				success ( F.parse ( query ),
-					function ( form, success, fail )
-						iq.send ( conn, to, 'set', form:format ( form, { }, 'submit' ), success, fail )
-					end,
-					function ( form, success, fail )
-						success ()
-					end )
-			else
-				fail ( mesg )
-			end
-		end )
-end
-
-return F
-
--- vim: se ts=4: --