--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test.lua Tue May 19 00:44:52 2009 +0300
@@ -0,0 +1,128 @@
+
+require 'glib'
+local lm = require 'lm'
+
+g.log.handler (
+ function ( domain, lvl, mesg )
+ print ( mesg )
+ end )
+
+sent = false
+
+server = 'jabber.kiev.ua'
+username = arg[1]
+password = arg[2]
+fingerprint = 'D5:F9:7B:6F:90:CC:E9:3C:36:AE:5E:3A:47:E4:C5:65'
+
+--[[
+-- What's goes on, pretty close to C api,
+-- but already some luxury...
+you_need_your_own_context = true
+
+if you_need_your_own_context then
+ cont = g.main_context.new ()
+ conn = lm.connection.new ( server, cont:pointer () )
+else
+ cont = g.main_context.default ()
+ conn = lm.connection.new ( server )
+end
+
+if lm.ssl.supported () then
+ conn:port ( 5223 )
+ conn:ssl ( lm.ssl.new ( fingerprint,
+ function (ssl, err)
+ print ( 'SSL error occured: ' .. err )
+ print ( 'Fingerprint: ' .. ssl:fingerprint () )
+ return true
+ end ) )
+end
+
+print ( 'Opening connection... ' )
+res = conn:open (
+ function ( connection, success )
+ if success then
+ print ( "Authenticating..." )
+ res = connection:authenticate ( username, password, 'llm-test',
+ function ( connection, success )
+ if success then
+ print ( "Sending..." )
+
+ connection:send (
+ lm.message.new( 'isbear@jabber.kiev.ua', 'message' )
+ :child ( 'body', 'Hello, this is just a test' ) )
+
+ connection:send (
+ lm.message.new( 'isbear@jabber.kiev.ua/lair', 'iq', 'get' )
+ :child( 'query', '' ):attribute ( 'xmlns', 'jabber:iq:version' ),
+ function ( connection, message )
+ node = message:child ( 'query' )
+ print ( 'Got response:' )
+ print ( ' name: ', node:child( 'name' ):value () )
+ print ( ' version: ', node:child( 'version' ):value () )
+ print ( ' os: ', node:child( 'os' ):value () )
+ sent = true
+ end )
+ else
+ print ( "Authenticate failure" )
+ sent = true
+ end
+ end )
+ print ( 'Authenticate returns ', res )
+ else
+ print ( "Open failure" )
+ sent = true
+ end
+ end )
+print ( 'Open returns ', res )
+
+--]]
+
+-- Shortened version with convenience lua functions:
+
+conn = lm.connect {
+ server = server,
+ port = 5223,
+ ssl = {
+ fingerprint = fingerprint,
+ validate = false,
+ },
+ username = username,
+ password = password,
+ resource = 'llm-test',
+ onconnect =
+ function ( connection )
+ print ( 'connected' )
+
+ connection:send (
+ lm.message.create { mtype = "message", to = 'isbear@jabber.kiev.ua',
+ body = { 'Hello, this is just a test' },
+ } )
+ print ( 'sent' )
+
+ connection:send (
+ lm.message.create { mtype = "iq-get", to = "isbear@jabber.kiev.ua/lair",
+ query = { xmlns = "jabber:iq:version" }
+ },
+ function ( connection, message )
+ print ( 'received' )
+ print ( 'Got response:' )
+ print ( ' name: ', message:path( 'query', 'name' ):value () )
+ print ( ' version: ', message:path( 'query', 'version' ):value () )
+ print ( ' os: ', message:path( 'query', 'os' ):value () )
+ sent = true
+ end )
+ print ( 'sent' )
+ end,
+}
+
+cont = g.main_context.default ()
+print ( 'Entering main loop...' )
+while not sent do
+ cont:iteration ( true )
+end
+
+print ( 'Closing connection... ' )
+conn:close ()
+print ( "Bye" )
+
+-- vim: se ts=4: --