test.lua
changeset 21 a9b92b65961e
child 22 1a1bc121fe90
--- /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: --