Mercurial > prosody-modules
comparison mod_http_upload/mod_http_upload.lua @ 2286:0a3f526779a1
mod_http_upload: Construct the upload slot URL using the LuaSocket URL library (fixes #717)
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 23 Aug 2016 00:44:14 +0200 |
parents | f1923bf329a3 |
children | e1a8c2324937 |
comparison
equal
deleted
inserted
replaced
2285:f1923bf329a3 | 2286:0a3f526779a1 |
---|---|
9 | 9 |
10 -- imports | 10 -- imports |
11 local st = require"util.stanza"; | 11 local st = require"util.stanza"; |
12 local lfs = require"lfs"; | 12 local lfs = require"lfs"; |
13 local uuid = require"util.uuid".generate; | 13 local uuid = require"util.uuid".generate; |
14 local urlencode = require"util.http".urlencode; | 14 local url = require "socket.url"; |
15 local dataform = require "util.dataforms".new; | 15 local dataform = require "util.dataforms".new; |
16 local t_concat = table.concat; | 16 local t_concat = table.concat; |
17 local t_insert = table.insert; | 17 local t_insert = table.insert; |
18 local s_upper = string.upper; | 18 local s_upper = string.upper; |
19 | 19 |
83 end | 83 end |
84 local reply = st.reply(stanza); | 84 local reply = st.reply(stanza); |
85 reply:tag("slot", { xmlns = xmlns_http_upload }); | 85 reply:tag("slot", { xmlns = xmlns_http_upload }); |
86 local random = uuid(); | 86 local random = uuid(); |
87 pending_slots[random.."/"..filename] = origin.full_jid; | 87 pending_slots[random.."/"..filename] = origin.full_jid; |
88 local url = module:http_url() .. "/" .. random .. "/" .. urlencode(filename); | 88 local base_url = module:http_url(); |
89 reply:tag("get"):text(url):up(); | 89 local slot_url = url.parse(base_url); |
90 reply:tag("put"):text(url):up(); | 90 slot_url.path = url.parse_path(slot_url.path); |
91 t_insert(slot_url.path, random); | |
92 t_insert(slot_url.path, filename); | |
93 slot_url.path.is_directory = false; | |
94 slot_url.path = url.build_path(slot_url.path); | |
95 slot_url = url.build(slot_url); | |
96 reply:tag("get"):text(slot_url):up(); | |
97 reply:tag("put"):text(slot_url):up(); | |
91 origin.send(reply); | 98 origin.send(reply); |
92 origin.log("debug", "Given upload slot %q", random); | 99 origin.log("debug", "Given upload slot %q", random); |
93 return true; | 100 return true; |
94 end); | 101 end); |
95 | 102 |