clix/archive.lua

changeset 114
757647426af2
parent 92
a629b953780c
child 115
1aaf30b457a0
equal deleted inserted replaced
113:8c9ab9920c79 114:757647426af2
4 if opts.short_help then 4 if opts.short_help then
5 print("Fetch archived messages"); 5 print("Fetch archived messages");
6 return; 6 return;
7 end 7 end
8 8
9 local reverse = opts.before;
9 if opts.start then 10 if opts.start then
10 opts.start = parse_datetime(opts.start); 11 opts.start = parse_datetime(opts.start);
11 end 12 end
12 if opts["end"] then 13 if opts["end"] then
13 opts["end"] = parse_datetime(opts["end"]); 14 opts["end"] = parse_datetime(opts["end"]);
38 selfjid = bare_jid(conn.jid); 39 selfjid = bare_jid(conn.jid);
39 local function handle_results(ok, result) 40 local function handle_results(ok, result)
40 for i=1,#result do 41 for i=1,#result do
41 print_message(result[i]); 42 print_message(result[i]);
42 end 43 end
43 if result.last then 44 if result[reverse and "first" or "last"] then
44 local fetch_next = opts.everything; 45 local fetch_next = opts.everything;
45 if opts.interactive and not fetch_next then 46 if opts.interactive and not fetch_next then
46 io.stderr:write "--More--" 47 io.stderr:write "--More--"
47 fetch_next = io.read"*l" or print(); 48 fetch_next = io.read"*l" or print();
48 end 49 end
49 if fetch_next then 50 if fetch_next then
51 if reverse then
52 opts.before = result.first and result.first[1];
53 else
50 opts.after = result.last; 54 opts.after = result.last;
55 end
51 conn:query_archive(opts.to, opts, handle_results); 56 conn:query_archive(opts.to, opts, handle_results);
52 return 57 return
53 else 58 else
54 conn:info("Next page: --after=%s", result.last); 59 conn:info("Next page: --%s=%s", reverse and "before" or "after", result[reverse and "first" or "last"]);
55 end 60 end
56 end 61 end
57 conn:close(); 62 conn:close();
58 end 63 end
59 conn:add_plugin"archive"; 64 conn:add_plugin"archive";

mercurial