Mercurial > prosody-modules
comparison mod_atom/mod_atom.lua @ 3432:61368aec97d6
mod_atom: Apply nodeprep via redirect for cache-friendlyness
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 06 Jan 2019 10:24:32 +0100 |
| parents | 6ae875c98daf |
| children | 5dd505c39c4b |
comparison
equal
deleted
inserted
replaced
| 3431:8357cabc31f6 | 3432:61368aec97d6 |
|---|---|
| 4 local mod_pep = module:depends"pep"; | 4 local mod_pep = module:depends"pep"; |
| 5 | 5 |
| 6 local um = require "core.usermanager"; | 6 local um = require "core.usermanager"; |
| 7 local nodeprep = require "util.encodings".stringprep.nodeprep; | 7 local nodeprep = require "util.encodings".stringprep.nodeprep; |
| 8 local st = require "util.stanza"; | 8 local st = require "util.stanza"; |
| 9 local urlencode = require "util.http".urlencode; | |
| 9 | 10 |
| 10 module:depends("http") | 11 module:depends("http") |
| 11 module:provides("http", { | 12 module:provides("http", { |
| 12 route = { | 13 route = { |
| 13 ["GET /*"] = function (event, user) | 14 ["GET /*"] = function (event, user) |
| 14 local request, response = event.request, event.response; | 15 local request, response = event.request, event.response; |
| 15 local actor = request.ip; | 16 local actor = request.ip; |
| 16 | 17 |
| 17 user = nodeprep(user); | 18 local prepped = nodeprep(user); |
| 18 if not user then return 400; end | 19 if not prepped then return 400; end |
| 20 if prepped ~= user then | |
| 21 response.headers.location = module:http_url() .. "/" .. urlencode(prepped); | |
| 22 return 302; | |
| 23 end | |
| 19 if not um.user_exists(user, module.host) then | 24 if not um.user_exists(user, module.host) then |
| 20 return 404; | 25 return 404; |
| 21 end | 26 end |
| 22 | 27 |
| 23 local pubsub_service = mod_pep.get_pep_service(user); | 28 local pubsub_service = mod_pep.get_pep_service(user); |
