# HG changeset patch # User Myhailo Danylenko # Date 1242683092 -10800 # Node ID a9b92b65961eb877b9dc50ea708642d48386eaa0 # Parent 0ce7093df25fdb0ad31446f132c10240105ec2a9 Test file :P diff -r 0ce7093df25f -r a9b92b65961e test.lua --- /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: --