clix/archive.lua

Thu, 28 Jun 2012 11:33:01 +0200

author
Kim Alvefur <zash@zash.se>
date
Thu, 28 Jun 2012 11:33:01 +0200
changeset 81
e87f4d0b1a80
parent 80
ae77d9c41f4f
child 90
3115bd81b9de
permissions
-rw-r--r--

clix.archive: Show timestamps

75
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local bare_jid = require"util.jid".bare;
78
bed3cfce7d60 clix.archive: Parse timestamps
Kim Alvefur <zash@zash.se>
parents: 77
diff changeset
2 local parse_datetime = require"util.datetime".parse;
75
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 return function (opts, arg)
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 if opts.short_help then
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 print("Fetch archived messages");
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 return;
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 end
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8
78
bed3cfce7d60 clix.archive: Parse timestamps
Kim Alvefur <zash@zash.se>
parents: 77
diff changeset
9 if opts.start then
bed3cfce7d60 clix.archive: Parse timestamps
Kim Alvefur <zash@zash.se>
parents: 77
diff changeset
10 opts.start = parse_datetime(opts.start);
bed3cfce7d60 clix.archive: Parse timestamps
Kim Alvefur <zash@zash.se>
parents: 77
diff changeset
11 end
bed3cfce7d60 clix.archive: Parse timestamps
Kim Alvefur <zash@zash.se>
parents: 77
diff changeset
12 if opts["end"] then
bed3cfce7d60 clix.archive: Parse timestamps
Kim Alvefur <zash@zash.se>
parents: 77
diff changeset
13 opts["end"] = parse_datetime(opts["end"]);
bed3cfce7d60 clix.archive: Parse timestamps
Kim Alvefur <zash@zash.se>
parents: 77
diff changeset
14 end
75
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 local selfjid;
81
e87f4d0b1a80 clix.archive: Show timestamps
Kim Alvefur <zash@zash.se>
parents: 80
diff changeset
16 local function print_message(i)
75
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 -- TODO Roster lookup
81
e87f4d0b1a80 clix.archive: Show timestamps
Kim Alvefur <zash@zash.se>
parents: 80
diff changeset
18 local m = i.message;
75
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 local a = m.attr;
81
e87f4d0b1a80 clix.archive: Show timestamps
Kim Alvefur <zash@zash.se>
parents: 80
diff changeset
20 if i.stamp then
e87f4d0b1a80 clix.archive: Show timestamps
Kim Alvefur <zash@zash.se>
parents: 80
diff changeset
21 print(os.date(nil, i.stamp));
e87f4d0b1a80 clix.archive: Show timestamps
Kim Alvefur <zash@zash.se>
parents: 80
diff changeset
22 end
80
ae77d9c41f4f clix.archive: The world doesn't revolve around us.
Kim Alvefur <zash@zash.se>
parents: 79
diff changeset
23 if a.to and bare_jid(a.to) ~= selfjid then
75
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 print("To ".. bare_jid(a.to));
80
ae77d9c41f4f clix.archive: The world doesn't revolve around us.
Kim Alvefur <zash@zash.se>
parents: 79
diff changeset
25 end
ae77d9c41f4f clix.archive: The world doesn't revolve around us.
Kim Alvefur <zash@zash.se>
parents: 79
diff changeset
26 if a.from and bare_jid(a.from) ~= selfjid then
75
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 print("From ".. bare_jid(a.from));
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28 end
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 print(m:get_child_text"body");
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 print"";
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 end
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 local function on_connect(conn)
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 if opts.debug then
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35 conn:hook("stanza-out", print);
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
36 conn:hook("stanza", print);
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
37 end
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
38 selfjid = bare_jid(conn.jid);
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
39 local function handle_results(ok, result)
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
40 for i=1,#result do
81
e87f4d0b1a80 clix.archive: Show timestamps
Kim Alvefur <zash@zash.se>
parents: 80
diff changeset
41 print_message(result[i]);
75
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
42 end
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
43 if result.last then
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
44 io.stderr:write "--More--"
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
45 if io.read"*l" then
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
46 opts.after = result.last;
79
a19ccb8f1ef9 clix.archive: Use --to specify where to direct the query
Kim Alvefur <zash@zash.se>
parents: 78
diff changeset
47 conn:query_archive(opts.to, opts, handle_results);
75
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
48 return
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
49 end
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
50 end
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
51 conn:close();
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
52 end
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
53 conn:add_plugin"archive";
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
54 -- TODO conn:add_plugin"roster";
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
55 -- c.roster:fetch(function()
79
a19ccb8f1ef9 clix.archive: Use --to specify where to direct the query
Kim Alvefur <zash@zash.se>
parents: 78
diff changeset
56 conn:query_archive(opts.to, opts, handle_results);
75
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
57 end
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
58 clix_connect(opts, on_connect);
8d5c99f46cb8 clix.archive: New plugin, a MAM browser
Kim Alvefur <zash@zash.se>
parents:
diff changeset
59 end

mercurial