examples/oob.lua
author Myhailo Danylenko <isbear@ukrpost.net>
Wed, 28 Nov 2012 20:17:53 +0200
changeset 146 04d19c9c1196
parent 111 5bcdb71ef2f2
permissions -rw-r--r--
Fix module loading problem
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
48
d31ae73038f7 OOB uses module interface
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     1
68
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     2
local lm  = require 'lm'
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     3
local oob = require 'lm.oob'
48
d31ae73038f7 OOB uses module interface
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     4
68
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     5
oob.handler (
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     6
	function ( from, url, desc, success, fail )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     7
		if desc then
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     8
			main.print_info ( from, 'Buddy wants you to download link: ' .. url .. ' (' .. desc .. ')' )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
     9
		else
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    10
			main.print_info ( from, 'Buddy wants you to download link: ' .. url )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    11
		end
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    12
		success ()
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    13
	end )
48
d31ae73038f7 OOB uses module interface
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    14
68
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    15
main.command ( 'oob',
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    16
	function ( args )
99
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    17
		local connection = main.connection ()
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    18
		if not connection then
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    19
			print "You are not online!"
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    20
			return
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    21
		end
68
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    22
		local who
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    23
		if args.t then
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    24
			who = args.t
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    25
		else
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    26
			who = main.full_jid ()
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    27
		end
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    28
		-- here we can run something external to put file on server and obtain link to it
99
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    29
		oob.send ( lm.connection.bless ( connection ), who, args[1],
68
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    30
			function ()
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    31
				main.print_info ( who, 'OOB link accepted' )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    32
			end,
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    33
			function ( mesg )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    34
				main.print_info ( who, 'OOB link refused: ' .. mesg )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    35
			end, args[2] )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    36
	end, true )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    37
99
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    38
local oob_iq_handler      = lm.message_handler.new ( oob.iq_handler )
68
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    39
local oob_message_handler = lm.message_handler.new ( oob.message_handler )
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    40
local oob_handler_registered = false
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    41
99
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    42
local oob_pc_handler =
68
742878c74b8e Lm separation, privacy
Myhailo Danylenko <isbear@ukrpost.net>
parents: 66
diff changeset
    43
	function ( args )
99
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    44
		local connection = main.connection ()
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    45
		if connection then
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    46
			local conn = lm.connection.bless ( connection )
111
5bcdb71ef2f2 Fix some example scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 100
diff changeset
    47
			conn:handler ( oob_iq_handler,      'iq',       'normal' )
5bcdb71ef2f2 Fix some example scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 100
diff changeset
    48
			conn:handler ( oob_message_handler, 'message',  'normal' )
99
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    49
			conn:handler ( oob_message_handler, 'presence', 'normal' )
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    50
			oob_handler_registered = true
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    51
		end
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    52
	end
111
5bcdb71ef2f2 Fix some example scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 100
diff changeset
    53
local oob_pd_handler = 
99
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    54
	function ( args )
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    55
		if oob_handler_registered then
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    56
			local connection = main.connection ()
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    57
			if connection then
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    58
				local conn = lm.connection.bless ( connection )
111
5bcdb71ef2f2 Fix some example scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 100
diff changeset
    59
				conn:handler ( oob_iq_handler,      'iq'       )
5bcdb71ef2f2 Fix some example scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 100
diff changeset
    60
				conn:handler ( oob_message_handler, 'message'  )
99
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    61
				conn:handler ( oob_message_handler, 'presence' )
48
d31ae73038f7 OOB uses module interface
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    62
			end
99
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    63
			oob_handler_registered = false
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    64
		end
111
5bcdb71ef2f2 Fix some example scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 100
diff changeset
    65
	end
5bcdb71ef2f2 Fix some example scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 100
diff changeset
    66
main.hook ( 'hook-post-connect',   oob_pc_handler )
5bcdb71ef2f2 Fix some example scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 100
diff changeset
    67
main.hook ( 'hook-pre-disconnect', oob_pd_handler )
48
d31ae73038f7 OOB uses module interface
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    68
99
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    69
main.hook ( 'hook-lua-start',
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    70
	function ( args )
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    71
		main.add_feature ( 'jabber:iq:oob' )
111
5bcdb71ef2f2 Fix some example scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 100
diff changeset
    72
		main.add_feature ( 'jabber:x:oob'  )
99
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    73
		oob_pc_handler ()
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    74
	end )
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    75
main.hook ( 'hook-lua-quit',
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    76
	function ( args )
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    77
		main.del_feature ( 'jabber:iq:oob' )
111
5bcdb71ef2f2 Fix some example scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 100
diff changeset
    78
		main.del_feature ( 'jabber:x:oob'  )
5bcdb71ef2f2 Fix some example scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 100
diff changeset
    79
		oob_pd_handler ()
99
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    80
	end )
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    81
ed4676536ed9 Update most useful scripts
Myhailo Danylenko <isbear@ukrpost.net>
parents: 68
diff changeset
    82
-- vim: se ts=4 sw=4: --