Mercurial > prosody-modules
comparison mod_http_muc_log/mod_http_muc_log.lua @ 3593:0b670831ace3
mod_http_muc_log: Correctly build absolute URLs
Handles case of http_path being "/", where :http_url() ends with a
slash, so there would be two slashes.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 13 May 2019 10:50:00 +0200 |
parents | 61a9c087730a |
children | b66111f75e4b |
comparison
equal
deleted
inserted
replaced
3592:61a9c087730a | 3593:0b670831ace3 |
---|---|
57 link.path = url.build_path(path); | 57 link.path = url.build_path(path); |
58 return url.build(link); | 58 return url.build(link); |
59 end | 59 end |
60 end | 60 end |
61 | 61 |
62 local function get_absolute_link(room, date) | |
63 local link = url.parse(module:http_url()); | |
64 local path = url.parse_path(link.path); | |
65 if room then | |
66 table.insert(path, room); | |
67 if date then | |
68 table.insert(path, date) | |
69 path.is_directory = false; | |
70 else | |
71 path.is_directory = true; | |
72 end | |
73 end | |
74 link.path = url.build_path(path) | |
75 return url.build(link) | |
76 end | |
77 | |
62 -- Whether room can be joined by anyone | 78 -- Whether room can be joined by anyone |
63 local function open_room(room) -- : boolean | 79 local function open_room(room) -- : boolean |
64 if type(room) == "string" then | 80 if type(room) == "string" then |
65 room = get_room(room); | 81 room = get_room(room); |
66 -- assumed to be a room object otherwise | 82 -- assumed to be a room object otherwise |
82 | 98 |
83 module:hook("muc-disco#info", function (event) | 99 module:hook("muc-disco#info", function (event) |
84 local room = event.room; | 100 local room = event.room; |
85 if open_room(room) then | 101 if open_room(room) then |
86 table.insert(event.form, { name = "muc#roominfo_logs", type="text-single" }); | 102 table.insert(event.form, { name = "muc#roominfo_logs", type="text-single" }); |
87 event.formdata["muc#roominfo_logs"] = module:http_url() .. "/" .. get_link(jid_split(event.room.jid), nil); | 103 event.formdata["muc#roominfo_logs"] = get_absolute_link(jid_split(event.room.jid), nil); |
88 end | 104 end |
89 end); | 105 end); |
90 | 106 |
91 local function sort_Y(a,b) return a.year > b.year end | 107 local function sort_Y(a,b) return a.year > b.year end |
92 local function sort_m(a,b) return a.n > b.n end | 108 local function sort_m(a,b) return a.n > b.n end |