# HG changeset patch # User Kim Alvefur # Date 1611667671 -3600 # Node ID d1a0f2e918c057730ec71a3b78c1c475f78fb092 # Parent b59aed75dc5e3f03879ca18290e8abdf371e8915 mod_http_file_share: Add support for external file upload service PUT /upload/:slot/:filename Authorization: Bearer JWT{ uploader, filename, filesize, filetype, exp } diff -r b59aed75dc5e -r d1a0f2e918c0 doc/doap.xml --- a/doc/doap.xml Tue Jan 26 03:19:17 2021 +0100 +++ b/doc/doap.xml Tue Jan 26 14:27:51 2021 +0100 @@ -619,7 +619,7 @@ 1.0.0 - complete + complete 0.12.0 mod_http_file_share diff -r b59aed75dc5e -r d1a0f2e918c0 plugins/mod_http_file_share.lua --- a/plugins/mod_http_file_share.lua Tue Jan 26 03:19:17 2021 +0100 +++ b/plugins/mod_http_file_share.lua Tue Jan 26 14:27:51 2021 +0100 @@ -17,7 +17,6 @@ local namespace = "urn:xmpp:http:upload:0"; -module:depends("http"); module:depends("disco"); module:add_identity("store", "file", module:get_option_string("name", "HTTP File Upload")); @@ -27,6 +26,11 @@ -- id, , time, owner local secret = module:get_option_string(module.name.."_secret", require"util.id".long()); +local external_base_url = module:get_option_string(module.name .. "_base_url"); + +if not external_base_url then + module:depends("http"); +end function may_upload(uploader, filename, filesize, filetype) -- > boolean, error -- TODO authz @@ -45,7 +49,7 @@ end function get_url(slot, filename) - local base_url = module:http_url(); + local base_url = external_base_url or module:http_url(); local slot_url = url.parse(base_url); slot_url.path = url.parse_path(slot_url.path or "/"); t_insert(slot_url.path, slot); @@ -182,6 +186,7 @@ module:hook("iq-get/host/urn:xmpp:http:upload:0:request", handle_slot_request); +if not external_base_url then module:provides("http", { streaming_uploads = true; route = { @@ -189,3 +194,4 @@ ["GET /*"] = handle_download; } }); +end