Software /
code /
clix
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 |