# HG changeset patch # User Myhailo Danylenko # Date 1237693754 -7200 # Node ID a95a3a73482cc0b4f02522d92c9cedb0e73c4121 # Parent 12d8dd774fcc24a181871d33be4acb1e1f731240 Pubsub uses new forms diff -r 12d8dd774fcc -r a95a3a73482c examples/ibb.lua --- a/examples/ibb.lua Sun Mar 22 04:54:29 2009 +0200 +++ b/examples/ibb.lua Sun Mar 22 05:49:14 2009 +0200 @@ -42,8 +42,7 @@ }, function () success ( 'end' ) -- XXX - end, - fail ) + end, fail ) elseif data ~= '' then local encoded = base64.encode ( data ) while encoded:len () > 0 and noerr do @@ -67,8 +66,7 @@ end end end ) - end, - fail ) + end, fail ) end -- private @@ -103,16 +101,16 @@ conn:send ( lm.message.create { to = from, mtype = 'iq-error', id = id, error = { code = '405', type = 'cancel', - ['not-allowed'] = { xmlns = 'urn:ietf:params:xml:ns:xmpp-stanzas' } - } + ['not-allowed'] = { xmlns = 'urn:ietf:params:xml:ns:xmpp-stanzas' }, + }, } ) end ) else conn:send ( lm.message.create { to = from, mtype = 'iq-error', id = id, error = { code = '409', type = 'cancel', - conflict = { xmlns = 'urn:ietf:params:xml:ns:xmpp-stanzas' } - } + conflict = { xmlns = 'urn:ietf:params:xml:ns:xmpp-stanzas' }, + }, } ) end elseif action == 'data' then @@ -129,15 +127,15 @@ conn:send ( lm.message.create { to = from, mtype = 'iq-error', id = id, error = { code = '409', type = 'cancel', - conflict = { xmlns = 'urn:ietf:params:xml:ns:xmpp-stanzas' } - } + conflict = { xmlns = 'urn:ietf:params:xml:ns:xmpp-stanzas' }, + }, } ) else conn:send ( lm.message.create { to = from, mtype = 'iq-error', id = id, error = { code = '404', type = 'cancel', -- XXX: check - ['item-not-found'] = { xmlns = 'urn:ietf:params:xml:ns:xmpp-stanzas' } - } + ['item-not-found'] = { xmlns = 'urn:ietf:params:xml:ns:xmpp-stanzas' }, + }, } ) end end @@ -158,15 +156,15 @@ conn:send ( lm.message.create { to = from, mtype = 'iq-error', id = id, error = { code = '409', type = 'cancel', - conflict = { xmlns = 'urn:ietf:params:xml:ns:xmpp-stanzas' } - } + conflict = { xmlns = 'urn:ietf:params:xml:ns:xmpp-stanzas' }, + }, } ) else conn:send ( lm.message.create { to = from, mtype = 'iq-error', id = id, error = { code = '404', type = 'cancel', -- XXX: check - ['item-not-found'] = { xmlns = 'urn:ietf:params:xml:ns:xmpp-stanzas' } - } + ['item-not-found'] = { xmlns = 'urn:ietf:params:xml:ns:xmpp-stanzas' }, + }, } ) end end diff -r 12d8dd774fcc -r a95a3a73482c examples/pubsub.lua --- a/examples/pubsub.lua Sun Mar 22 04:54:29 2009 +0200 +++ b/examples/pubsub.lua Sun Mar 22 05:49:14 2009 +0200 @@ -5,6 +5,7 @@ require 'lm' require 'iq' +require 'x_data' -- public @@ -68,6 +69,8 @@ success ( from, node, item ) -- XXX use registered xmlns handlers for that? item = item:next () end + else + -- XXX end end, fail ) end @@ -121,41 +124,30 @@ configure = { node = node }, }, }, - function ( mess ) -- FIXME + function ( mess ) local x = mess:path ( 'pubsub', 'configure', 'x' ) if x then - local fid = parse_form ( x ) - forms[fid].send = - function ( form ) + success ( x_data.parse ( x ), + function ( form, success, fail ) + iq.send ( conn, to, 'set', + { + pubsub = { xmlns = 'http://jabber.org/protocol/pubsub#owner', + configure = form.format ( form, { node = node } ), + }, + }, success, fail ) + end, + function ( form, success, fail ) iq.send ( conn, to, 'set', { pubsub = { xmlns = 'http://jabber.org/protocol/pubsub#owner', configure = { node = node, - x = { xmlns = 'jabber:x:data', type = 'submit', - field = form.val, - }, + x = { xmlns = 'jabber:x:data', type = 'cancel' }, -- FIXME }, }, - }, - function ( mess ) - success () - main.print_info ( to, 'Now you can run /form del ' .. fid .. ' to delete form from list' ) - form.status = 'acquired' - end, - function ( mesg ) - if mesg then - form.status = 'rejected' - else - form.status = 'unknown' - end - fail ( mesg ) - end ) - form.status = 'sent' - end - forms[fid].status = 'filling' - main.print_info ( to, 'You have new form. To fill it, use /form ' .. fid .. ' fieldname value' ) + }, success, fail ) + end ) else - main.print_info ( to, 'Weird, no error and no node configuration form: ' .. mess:xml () ) + fail ( mess:xml () ) -- XXX end end, fail ) end @@ -261,8 +253,32 @@ end ) elseif action:sub ( 1, 4 ) == 'conf' then pubsub.configure_node ( conn, who, node, - function () - main.print_info ( who, 'Node configuration accepted' ) + function ( form, submit, reject ) + local id = #forms + 1 + forms[id] = { + form = form, + submit = + function ( form ) + submit ( form, + function () + main.print_info ( who, 'Node configuration completed' ) + end, + function ( mesg ) + main.print_info ( who, 'Node configuration failed: ' .. mesg ) + end ) + end, + reject = + function ( form ) + reject ( form, + function () + main.print_info ( who, 'Node configuration cancelled' ) + end, + function ( mesg ) + main.print_info ( who, 'Node configuration cancellation failed: ' .. mesg ) + end ) + end, + } + print ( 'You have new form ' .. id ) end, function ( mesg ) main.print_info ( who, 'Node configuration failed: ' .. mesg ) diff -r 12d8dd774fcc -r a95a3a73482c examples/remote.lua --- a/examples/remote.lua Sun Mar 22 04:54:29 2009 +0200 +++ b/examples/remote.lua Sun Mar 22 05:49:14 2009 +0200 @@ -48,7 +48,12 @@ end, fail ) end, function ( form, success, fail ) - success () + iq.send ( conn, to, 'set', + { + command = { xmlns = 'http://jabber.org/protocol/commands', node = command, sessionid = sid, + x = { xmlns = 'jabber:x:data', type = 'cancel' }, -- FIXME + }, + }, success, fail ) end ) else fail ( mess:xml () ) -- XXX