Software /
code /
prosody-modules
Annotate
mod_http_libjs/mod_http_libjs.lua @ 4941:e7b9bc629ecc
mod_rest: Add special handling to catch MAM results from remote hosts
Makes MAM queries to remote hosts works.
As the comment says, MAM results from users' local archives or local
MUCs are returned via origin.send() which is provided in the event and
thus already worked. Results from remote hosts go via normal stanza
routing and events, which need this extra handling to catch.
This pattern of iq-set, message+, iq-result is generally limited to MAM.
Closest similar thing might be MUC join, but to really handle that you
would need the webhook callback mechanism.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 16 May 2022 19:47:09 +0200 |
parent | 4604:f0efbb0b0b5b |
child | 4976:75b6e5df65f9 |
rev | line source |
---|---|
4087
88a469b285f5
mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 local mime_map = module:shared("/*/http_files/mime").types or { |
88a469b285f5
mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 css = "text/css", |
88a469b285f5
mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 js = "application/javascript", |
88a469b285f5
mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 }; |
88a469b285f5
mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 |
4095
de2390d6bbe4
mod_http_libjs: Add compatibility with Prosody 0.11.x
Matthew Wild <mwild1@gmail.com>
parents:
4087
diff
changeset
|
6 local serve; |
de2390d6bbe4
mod_http_libjs: Add compatibility with Prosody 0.11.x
Matthew Wild <mwild1@gmail.com>
parents:
4087
diff
changeset
|
7 if not pcall(function () |
de2390d6bbe4
mod_http_libjs: Add compatibility with Prosody 0.11.x
Matthew Wild <mwild1@gmail.com>
parents:
4087
diff
changeset
|
8 local http_files = require "net.http.files"; |
de2390d6bbe4
mod_http_libjs: Add compatibility with Prosody 0.11.x
Matthew Wild <mwild1@gmail.com>
parents:
4087
diff
changeset
|
9 serve = http_files.serve; |
de2390d6bbe4
mod_http_libjs: Add compatibility with Prosody 0.11.x
Matthew Wild <mwild1@gmail.com>
parents:
4087
diff
changeset
|
10 end) then |
de2390d6bbe4
mod_http_libjs: Add compatibility with Prosody 0.11.x
Matthew Wild <mwild1@gmail.com>
parents:
4087
diff
changeset
|
11 serve = module:depends"http_files".serve; |
de2390d6bbe4
mod_http_libjs: Add compatibility with Prosody 0.11.x
Matthew Wild <mwild1@gmail.com>
parents:
4087
diff
changeset
|
12 end |
de2390d6bbe4
mod_http_libjs: Add compatibility with Prosody 0.11.x
Matthew Wild <mwild1@gmail.com>
parents:
4087
diff
changeset
|
13 |
4087
88a469b285f5
mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 local libjs_path = module:get_option_string("libjs_path", "/usr/share/javascript"); |
88a469b285f5
mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 |
4604
f0efbb0b0b5b
mod_http_libjs: Check that the path to serve exists
Kim Alvefur <zash@zash.se>
parents:
4095
diff
changeset
|
16 do -- sanity check |
f0efbb0b0b5b
mod_http_libjs: Check that the path to serve exists
Kim Alvefur <zash@zash.se>
parents:
4095
diff
changeset
|
17 local lfs = require "lfs"; |
f0efbb0b0b5b
mod_http_libjs: Check that the path to serve exists
Kim Alvefur <zash@zash.se>
parents:
4095
diff
changeset
|
18 |
f0efbb0b0b5b
mod_http_libjs: Check that the path to serve exists
Kim Alvefur <zash@zash.se>
parents:
4095
diff
changeset
|
19 local exists, err = lfs.attributes(libjs_path, "mode"); |
f0efbb0b0b5b
mod_http_libjs: Check that the path to serve exists
Kim Alvefur <zash@zash.se>
parents:
4095
diff
changeset
|
20 if exists ~= "directory" then |
f0efbb0b0b5b
mod_http_libjs: Check that the path to serve exists
Kim Alvefur <zash@zash.se>
parents:
4095
diff
changeset
|
21 module:log("error", "Problem with 'libjs_path': %s", err or "not a directory"); |
f0efbb0b0b5b
mod_http_libjs: Check that the path to serve exists
Kim Alvefur <zash@zash.se>
parents:
4095
diff
changeset
|
22 end |
f0efbb0b0b5b
mod_http_libjs: Check that the path to serve exists
Kim Alvefur <zash@zash.se>
parents:
4095
diff
changeset
|
23 end |
f0efbb0b0b5b
mod_http_libjs: Check that the path to serve exists
Kim Alvefur <zash@zash.se>
parents:
4095
diff
changeset
|
24 |
4087
88a469b285f5
mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 module:provides("http", { |
88a469b285f5
mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 default_path = "/share"; |
88a469b285f5
mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 route = { |
4095
de2390d6bbe4
mod_http_libjs: Add compatibility with Prosody 0.11.x
Matthew Wild <mwild1@gmail.com>
parents:
4087
diff
changeset
|
28 ["GET /*"] = serve({ path = libjs_path, mime_map = mime_map }); |
4087
88a469b285f5
mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 } |
88a469b285f5
mod_http_libjs: New module to serve common CSS/Javascript libraries
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 }); |