examples/xep0163.lua
author Myhailo Danylenko <isbear@ukrpost.net>
Sun, 15 Mar 2009 20:45:24 +0200
changeset 24 25552b21d3fb
parent 23 e441162b1386
child 26 fc83934f9b8d
permissions -rw-r--r--
Arguments parsing
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
23
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     1
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     2
dopath 'mpd'
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     3
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     4
tune_enabled = false
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     5
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     6
mpd_pub_song = { }
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     7
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     8
function mpd_getstatus ()
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     9
	local status   = mpd.call_command { 'status' }
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    10
	if not tune_enabled or ( status.state ~= 'play' and status.state ~= 'pause' ) then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    11
		if mpd_pub_song.artist or mpd_pub_song.length or mpd_pub_song.source or mpd_pub_song.title or mpd_pub_song.track then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    12
			mpd_pub_song.artist = nil
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    13
			mpd_pub_song.length = nil
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    14
			mpd_pub_song.source = nil
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    15
			mpd_pub_song.title  = nil
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    16
			mpd_pub_song.track  = nil
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    17
			return mpd_pub_song
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    18
		else
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    19
			return nil
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    20
		end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    21
	end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    22
	
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    23
	local modified  = false
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    24
	local song      = mpd.call_command { 'currentsong' }
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    25
	local dir, file = song.file:match ( '(.+)/(.-)' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    26
	-- populate according to currentsong fields: artist - artist, length - time, source - album, title - title, track - id, rating - ?, uri - ?
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    27
	local artist, length, source, title, track = song.artist, song.time, song.album, song.title, song.id
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    28
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    29
	if not artist or artist == '' then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    30
		artist = 'Unknown'
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    31
	end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    32
	if not mpd_pub_song.artist or artist ~= mpd_pub_song.artist[1] then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    33
		mpd_pub_song.artist = { artist }
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    34
		modified = true
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    35
	end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    36
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    37
	if length and length ~= 0 then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    38
		if not mpd_pub_song.length or length ~= mpd_pub_song.length[1] then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    39
			mpd_pub_song.length = { length }
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    40
			modified = true
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    41
		end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    42
	elseif mpd_pub_song.length then -- no length
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    43
		mpd_pub_song.length = nil
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    44
		modified = true
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    45
	end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    46
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    47
	if not source or source == '' then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    48
		source = dir
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    49
	end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    50
	if not mpd_pub_song.source or source ~= mpd_pub_song.source[1] then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    51
		mpd_pub_song.source = { source }
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    52
		modified = true
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    53
	end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    54
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    55
	if not title or title == '' then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    56
		title = file
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    57
	end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    58
	if not mpd_pub_song.title or title ~= mpd_pub_song.title[1] then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    59
		mpd_pub_song.title = { title }
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    60
		modified = true
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    61
	end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    62
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    63
	if not mpd_pub_song.track or track ~= mpd_pub_song.track[1] then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    64
		mpd_pub_song.track = { track }
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    65
		modified = true
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    66
	end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    67
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    68
	if modified then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    69
		return mpd_pub_song
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    70
	else
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    71
		return nil
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    72
	end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    73
end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    74
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    75
function pep_publish ( node, data )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    76
	local conn = lm.connection.bless ( main.connection () )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    77
	data.xmlns = 'http://jabber.org/protocol/' .. node -- this may modify original data? imo it does not matter.
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    78
	if conn:status () == 'authenticated' then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    79
--		local bjid = conn:jid():gsub ( '/.*', '' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    80
		conn:send (
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    81
			lm.message.create { mtype = 'iq-set', -- from = conn:jid (), to = bjid,
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    82
				pubsub = { xmlns = 'http://jabber.org/protocol/pubsub',
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    83
					publish = { node = 'http://jabber.org/protocol/' .. node,
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    84
						item = { -- id = "current",
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    85
							[node] = data,
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    86
						},
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    87
					},
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    88
				},
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    89
--[[
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    90
				configure = {
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    91
					x = {
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    92
						field = {{ type = "hidden", var = 'FORM_TYPE',
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    93
							value = { 'http://jabber.org/protocol/pubsub#node_config' },
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    94
						},{ var = "pubsub#access_model",
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    95
							value = { 'presence' },
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    96
						}},
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    97
					},
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    98
				},
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    99
--]]
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   100
			},
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   101
			function ( conn, mess )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   102
				local mtype, smtype = mess:type ()
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   103
				if smtype == 'result' then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   104
					return true
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   105
				elseif smtype == 'error' then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   106
					print ( 'Error publishing to ' .. node .. ': ' .. mess:xml () ) -- FIXME
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   107
					return true
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   108
				else
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   109
					print ( 'Weird ansver to publishing request: ' .. mess:xml () )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   110
					return false
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   111
				end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   112
			end )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   113
	end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   114
end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   115
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   116
pep_incoming_message_handler = lm.message_handler.new (
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   117
	function ( conn, mess )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   118
		local e = mess:child ( 'event' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   119
		if e and e:attribute ( 'xmlns' ) == 'http://jabber.org/protocol/pubsub#event' then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   120
			local enable = yesno ( main.option ( 'pep_notification' ) )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   121
			if enable == false then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   122
				return true
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   123
			end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   124
			local is = e:child ( 'items' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   125
			if is then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   126
				local from = mess:attribute ( 'from' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   127
				local node = is:attribute ( 'node' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   128
				if node == 'http://jabber.org/protocol/tune' then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   129
					local tune = is:path ( 'item', 'tune' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   130
					if tune then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   131
						local item = tune:children ()
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   132
						local text = ''
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   133
						while item do
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   134
							text = ("%s\n- %s: %s"):format ( text, item:name (), item:value () or '' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   135
							item = item:next ()
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   136
						end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   137
						if text ~= '' then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   138
							text = 'Now listening to:' .. text
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   139
						else
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   140
							text = 'Now not listening to anything'
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   141
						end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   142
						main.print_info ( from, text )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   143
						return true
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   144
					else
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   145
						main.print_info ( from, 'Strange: no tune item in pep notification' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   146
					end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   147
				elseif node == 'http://jabber.org/protocol/mood' then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   148
					local mood = is:path ( 'item', 'mood' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   149
					if mood then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   150
						local item = mood:children ()
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   151
						local mood, desc
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   152
						while item do
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   153
							if item:name () == 'text' then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   154
								desc = item:value ()
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   155
							else
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   156
								mood = item:name ()
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   157
								-- here we can add child elements handling (by namespace)
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   158
							end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   159
							item = item:next ()
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   160
						end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   161
						if mood then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   162
							main.print_info ( from, ("Buddy's mood now %s %s"):format ( mood, desc or '' ) )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   163
						else
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   164
							main.print_info ( from, "Buddy hides his mood" )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   165
						end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   166
						return true
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   167
					else
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   168
						main.print_info ( from, 'Strange: no mood item in pep notification' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   169
					end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   170
				elseif node == 'http://jabber.org/protocol/activity' then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   171
					local activity = is:path ( 'item', 'activity' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   172
					if activity then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   173
						local item = activity:children ()
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   174
						local activity, desc
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   175
						while item do
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   176
							if item:name () == 'text' then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   177
								desc = item:value ()
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   178
							else
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   179
								activity = item:name ()
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   180
								local subitem = item:children ()
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   181
								if subitem then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   182
									-- here we can check for non-standard subactivity elements,
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   183
									-- add subactivity child elements handling
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   184
									activity = ("%s: %s"):format ( activity, subitem:name () )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   185
								end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   186
							end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   187
							item = item:next ()
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   188
						end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   189
						if activity then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   190
							main.print_info ( from, ("Now %s %s"):format ( activity, desc or '' ) )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   191
						else
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   192
							main.print_info ( from, "Buddy hides his activity" )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   193
						end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   194
						return true
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   195
					else
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   196
						main.print_info ( from, 'Strange: no activity item in pep notification' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   197
					end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   198
				elseif node == 'http://jabber.org/protocol/geoloc' then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   199
					local loc = is:path ( 'item', 'geoloc' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   200
					if loc then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   201
						local item = loc:children ()
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   202
						local text = ''
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   203
						while item do
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   204
							text = ("%s\n- %s: %s"):format ( text, item:name (), item:value () or '' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   205
							item = item:next ()
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   206
						end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   207
						if text ~= '' then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   208
							text = 'Now at:' .. text
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   209
						else
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   210
							text = 'Now in unknown location'
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   211
						end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   212
						main.print_info ( from, text )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   213
						return true
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   214
					else
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   215
						main.print_info ( from, 'Strange: no geoloc item in pep notification' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   216
					end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   217
				else
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   218
					main.print_info ( from, 'Unknown node in pep notification: ' .. is:xml () )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   219
				end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   220
			end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   221
		end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   222
		return false
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   223
	end )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   224
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   225
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   226
function mpd_callback ()
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   227
	local sdata = mpd_getstatus ()
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   228
	if sdata then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   229
		pep_publish ( 'tune', sdata )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   230
	end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   231
	if tune_enabled then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   232
		return true
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   233
	else
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   234
		return false
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   235
	end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   236
end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   237
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   238
-- do not call it too fast, or you end up with many daemons at once
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   239
function enable_tune ( yn )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   240
	if yn == nil then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   241
		yn = true
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   242
	end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   243
	if yn then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   244
		if not tune_enabled then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   245
			main.timer ( 15, mpd_callback )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   246
			tune_enabled = true
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   247
			-- update status
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   248
		end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   249
	else
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   250
		if tune_enabled then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   251
			tune_enabled = false
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   252
			-- update status
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   253
		end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   254
	end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   255
end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   256
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   257
main.command ( 'tune',
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   258
	function ( args )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   259
		local enable = yesno ( args )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   260
		if enable == nil then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   261
			if tune_enabled then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   262
				print ( "Tune notifications enabled" )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   263
			else
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   264
				print ( "Tune notifications disabled" )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   265
			end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   266
		else
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   267
			enable_tune ( enable )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   268
		end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   269
	end, boolean_cid )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   270
main.command ( 'mood',
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   271
	function ( args )
24
25552b21d3fb Arguments parsing
Myhailo Danylenko <isbear@ukrpost.net>
parents: 23
diff changeset
   272
		args = parse_args ( args )
23
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   273
		local data = { }
24
25552b21d3fb Arguments parsing
Myhailo Danylenko <isbear@ukrpost.net>
parents: 23
diff changeset
   274
		local mood, text = args[1], args[2]
25552b21d3fb Arguments parsing
Myhailo Danylenko <isbear@ukrpost.net>
parents: 23
diff changeset
   275
		if text then
23
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   276
			data.text  = { text }
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   277
		end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   278
		if mood ~= '' then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   279
			data[mood] = { }
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   280
		end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   281
		pep_publish ( 'mood', data )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   282
	end )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   283
main.command ( 'activity',
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   284
	function ( args )
24
25552b21d3fb Arguments parsing
Myhailo Danylenko <isbear@ukrpost.net>
parents: 23
diff changeset
   285
		args = parse_args ( args )
23
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   286
		local data = { }
24
25552b21d3fb Arguments parsing
Myhailo Danylenko <isbear@ukrpost.net>
parents: 23
diff changeset
   287
		local activity, text = args[1], args[2]
25552b21d3fb Arguments parsing
Myhailo Danylenko <isbear@ukrpost.net>
parents: 23
diff changeset
   288
		if text then
23
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   289
			data.text = { text }
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   290
		end
24
25552b21d3fb Arguments parsing
Myhailo Danylenko <isbear@ukrpost.net>
parents: 23
diff changeset
   291
		local act, subact = activity:match ( "(.-)%-(.+)" )
23
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   292
		if not act then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   293
			act = activity
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   294
		end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   295
		if act ~= '' then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   296
			data[act] = { }
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   297
			if subact then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   298
				data[act][subact] = { }
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   299
			end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   300
		end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   301
		pep_publish ( 'activity', data )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   302
	end )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   303
main.command ( 'location',
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   304
	function ( args )
24
25552b21d3fb Arguments parsing
Myhailo Danylenko <isbear@ukrpost.net>
parents: 23
diff changeset
   305
		args = parse_args ( args )
23
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   306
		local data = { }
24
25552b21d3fb Arguments parsing
Myhailo Danylenko <isbear@ukrpost.net>
parents: 23
diff changeset
   307
		for key, val in pairs ( args ) do
23
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   308
			data[key] = { val }
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   309
		end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   310
		pep_publish ( 'geoloc', data )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   311
	end )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   312
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   313
commands_help['tune']     = "[enable|disable|on|off|yes|no|true|false]\n\nEnables or disables publishing of notifications about playing music in your player (currently only mpd is supported)."
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   314
commands_help['mood']     = "[mood [message]]\n\nPublishes your mood.\nNote, that for now it does not checks for mood validity, so, see xep0107 for valid moods."
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   315
commands_help['activity'] = "[activity[-specific_activity] [text]]\n\nPublishes your activity.\nNote, that for now it does not checks for activity validity, so, see xep0108 for valid activity values."
24
25552b21d3fb Arguments parsing
Myhailo Danylenko <isbear@ukrpost.net>
parents: 23
diff changeset
   316
commands_help['location'] = "[-key value [-key value ...]]\n\nPublishes your current geolocation.\nValid keys are accuracy, alt, area, bearing, building, country, datum, description, error, floor, lat, locality, lon, postalcode, region, room, speed, street, text, timestamp and uri, according to xep0080."
23
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   317
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   318
pep_handler_registered = false
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   319
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   320
hooks_d['hook-post-connect'].xep0163 =
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   321
	function ( args )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   322
		lm.connection.bless( main.connection () ):handler ( pep_incoming_message_handler, 'message', 'normal' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   323
		pep_handler_registered = true
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   324
		if tune_enabled then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   325
			mpd_callback ()
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   326
		end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   327
		-- XXX: may it confuse pairs()?
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   328
		hooks_d['hook-post-connect'].xep0163 =
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   329
			function ( args )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   330
				if tune_enabled then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   331
					mpd_callback ()
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   332
				end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   333
			end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   334
		hooks_d['hook-quit'].xep0163 =
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   335
			function ( args )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   336
				if mpd_handler_registered then
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   337
					lm.connection.bless( main.connection () ):handler ( pep_incoming_message_handler, 'message' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   338
					pep_handler_registered = false
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   339
				end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   340
			end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   341
	end
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   342
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   343
-- XXX: this really should be initialized after connection establishment?
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   344
-- but as this thing is implemented by now, it will be cached by server,
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   345
-- and, thus, we will be unable to get notifications.
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   346
main.add_feature ( 'http://jabber.org/protocol/tune+notify' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   347
main.add_feature ( 'http://jabber.org/protocol/tune' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   348
main.add_feature ( 'http://jabber.org/protocol/mood+notify' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   349
main.add_feature ( 'http://jabber.org/protocol/mood' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   350
main.add_feature ( 'http://jabber.org/protocol/activity+notify' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   351
main.add_feature ( 'http://jabber.org/protocol/activity' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   352
main.add_feature ( 'http://jabber.org/protocol/geoloc+notify' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   353
main.add_feature ( 'http://jabber.org/protocol/geoloc' )
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   354
e441162b1386 One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   355
-- vim: se ts=4: --