author | Myhailo Danylenko <isbear@ukrpost.net> |
Mon, 16 Mar 2009 18:54:16 +0200 | |
changeset 34 | 8206d7cb1447 |
parent 32 | 524fde5be49a |
child 35 | 8deda77c72e5 |
permissions | -rw-r--r-- |
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 |
31
54957980a83a
yesno in C, no config_file
Myhailo Danylenko <isbear@ukrpost.net>
parents:
29
diff
changeset
|
120 |
local enable = main.yesno ( main.option ( 'lua_pep_notification' ) ) |
23
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 ) |
31
54957980a83a
yesno in C, no config_file
Myhailo Danylenko <isbear@ukrpost.net>
parents:
29
diff
changeset
|
259 |
local enable = main.yesno ( args ) |
23
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 |
34
8206d7cb1447
Args auto-parsing, use main.binding
Myhailo Danylenko <isbear@ukrpost.net>
parents:
32
diff
changeset
|
269 |
end, false, 'yesno' ) |
23
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 ) |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
272 |
local data = { } |
24 | 273 |
local mood, text = args[1], args[2] |
274 |
if text then |
|
23
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
275 |
data.text = { text } |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
276 |
end |
26
fc83934f9b8d
Pubsub interface merged into one command
Myhailo Danylenko <isbear@ukrpost.net>
parents:
24
diff
changeset
|
277 |
if mood then |
23
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
278 |
data[mood] = { } |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
279 |
end |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
280 |
pep_publish ( 'mood', data ) |
34
8206d7cb1447
Args auto-parsing, use main.binding
Myhailo Danylenko <isbear@ukrpost.net>
parents:
32
diff
changeset
|
281 |
end, true ) |
23
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
282 |
main.command ( 'activity', |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
283 |
function ( args ) |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
284 |
local data = { } |
24 | 285 |
local activity, text = args[1], args[2] |
286 |
if text then |
|
23
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
287 |
data.text = { text } |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
288 |
end |
24 | 289 |
local act, subact = activity:match ( "(.-)%-(.+)" ) |
23
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
290 |
if not act then |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
291 |
act = activity |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
292 |
end |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
293 |
if act ~= '' then |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
294 |
data[act] = { } |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
295 |
if subact then |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
296 |
data[act][subact] = { } |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
297 |
end |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
298 |
end |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
299 |
pep_publish ( 'activity', data ) |
34
8206d7cb1447
Args auto-parsing, use main.binding
Myhailo Danylenko <isbear@ukrpost.net>
parents:
32
diff
changeset
|
300 |
end, true ) |
23
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
301 |
main.command ( 'location', |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
302 |
function ( args ) |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
303 |
local data = { } |
24 | 304 |
for key, val in pairs ( args ) do |
23
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
305 |
data[key] = { val } |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
306 |
end |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
307 |
pep_publish ( 'geoloc', data ) |
34
8206d7cb1447
Args auto-parsing, use main.binding
Myhailo Danylenko <isbear@ukrpost.net>
parents:
32
diff
changeset
|
308 |
end, true ) |
23
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
309 |
|
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
310 |
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
|
311 |
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
|
312 |
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 | 313 |
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
|
314 |
|
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
315 |
pep_handler_registered = false |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
316 |
|
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
317 |
hooks_d['hook-post-connect'].xep0163 = |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
318 |
function ( args ) |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
319 |
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
|
320 |
pep_handler_registered = true |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
321 |
if tune_enabled then |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
322 |
mpd_callback () |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
323 |
end |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
324 |
-- XXX: may it confuse pairs()? |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
325 |
hooks_d['hook-post-connect'].xep0163 = |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
326 |
function ( args ) |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
327 |
if tune_enabled then |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
328 |
mpd_callback () |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
329 |
end |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
330 |
end |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
331 |
hooks_d['hook-quit'].xep0163 = |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
332 |
function ( args ) |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
333 |
if mpd_handler_registered then |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
334 |
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
|
335 |
pep_handler_registered = false |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
336 |
end |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
337 |
end |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
338 |
end |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
339 |
|
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
340 |
-- XXX: this really should be initialized after connection establishment? |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
341 |
-- 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
|
342 |
-- and, thus, we will be unable to get notifications. |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
343 |
main.add_feature ( 'http://jabber.org/protocol/tune+notify' ) |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
344 |
main.add_feature ( 'http://jabber.org/protocol/tune' ) |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
345 |
main.add_feature ( 'http://jabber.org/protocol/mood+notify' ) |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
346 |
main.add_feature ( 'http://jabber.org/protocol/mood' ) |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
347 |
main.add_feature ( 'http://jabber.org/protocol/activity+notify' ) |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
348 |
main.add_feature ( 'http://jabber.org/protocol/activity' ) |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
349 |
main.add_feature ( 'http://jabber.org/protocol/geoloc+notify' ) |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
350 |
main.add_feature ( 'http://jabber.org/protocol/geoloc' ) |
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
351 |
|
e441162b1386
One pep handler, pep commands
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
352 |
-- vim: se ts=4: -- |