Comparison

clix/archive.lua @ 75:8d5c99f46cb8

clix.archive: New plugin, a MAM browser
author Kim Alvefur <zash@zash.se>
date Mon, 25 Jun 2012 02:39:41 +0200
child 77:22be057cf590
comparison
equal deleted inserted replaced
74:4b64a556a2cd 75:8d5c99f46cb8
1 local bare_jid = require"util.jid".bare;
2 return function (opts, arg)
3 if opts.short_help then
4 print("Fetch archived messages");
5 return;
6 end
7
8 local selfjid;
9 local function print_message(m)
10 -- TODO Roster lookup
11 -- TODO Timestamp
12 local a = m.attr;
13 if bare_jid(a.from) == selfjid then
14 print("To ".. bare_jid(a.to));
15 else
16 print("From ".. bare_jid(a.from));
17 end
18 print(m:get_child_text"body");
19 print"";
20 end
21
22 print"opts"
23 for k,v in pairs(opts) do
24 print("",k,v)
25 end
26
27 local function on_connect(conn)
28 if opts.debug then
29 conn:hook("stanza-out", print);
30 conn:hook("stanza", print);
31 end
32 selfjid = bare_jid(conn.jid);
33 local function handle_results(ok, result)
34 for i=1,#result do
35 print_message(result[i].message);
36 end
37 if result.last then
38 io.stderr:write "--More--"
39 if io.read"*l" then
40 opts.after = result.last;
41 conn:query_archive(nil, opts, handle_results);
42 return
43 end
44 end
45 conn:close();
46 end
47 conn:add_plugin"archive";
48 -- TODO conn:add_plugin"roster";
49 -- c.roster:fetch(function()
50 conn:query_archive(nil, opts, handle_results);
51 end
52 clix_connect(opts, on_connect);
53 end