Diff

mod_storage_s3/mod_storage_s3.lua @ 5781:32bc648e3892

mod_storage_s3: Fix passing of prefixes, should not be urlencoded
author Kim Alvefur <zash@zash.se>
date Sat, 02 Dec 2023 12:20:36 +0100
parent 5760:72b0fa7e36dc
child 5782:c7affea8bb24
line wrap: on
line diff
--- a/mod_storage_s3/mod_storage_s3.lua	Sat Dec 02 11:48:19 2023 +0100
+++ b/mod_storage_s3/mod_storage_s3.lua	Sat Dec 02 12:20:36 2023 +0100
@@ -175,7 +175,7 @@
 
 function keyval:users()
 	local bucket_path = url.build_path({ is_absolute = true; bucket; is_directory = true });
-	local prefix = url.build_path({ jid.escape(module.host); is_directory = true });
+	local prefix = jid.escape(module.host) .. "/";
 	local list_result, err = async.wait_for(new_request(self, "GET", bucket_path, { prefix = prefix }))
 	if err or list_result.code ~= 200 then
 		return nil, err;
@@ -238,7 +238,7 @@
 
 function archive:find(username, query)
 	local bucket_path = url.build_path({ is_absolute = true; bucket; is_directory = true });
-	local prefix = { jid.escape(module.host); jid.escape(username or "@"); jid.escape(self.store); is_directory = true };
+	local prefix = { jid.escape(module.host); jid.escape(username or "@"); jid.escape(self.store) };
 	if not query then
 		query = {};
 	end
@@ -250,7 +250,7 @@
 		end
 	end
 
-	prefix = url.build_path(prefix);
+	prefix = table.concat(prefix, "/").."/";
 	local list_result, err = async.wait_for(new_request(self, "GET", bucket_path, {
 		prefix = prefix;
 		["max-keys"] = query["max"] and tostring(query["max"]);