Software / code / prosody
Comparison
plugins/mod_http.lua @ 11022:3e5bc34be734
mod_http: Add way to signal that a module supports streaming uploads
Fixes #726
API:
module:provides("http", {
streaming_uploads = true;
route = {
PUT = function (event)
event.request.body_sink = io.tmpfile();
return true;
end
}
})
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sat, 01 Aug 2020 18:41:30 +0200 |
| parent | 11021:9673c95895fb |
| child | 11066:dc41c8dfd2b1 |
comparison
equal
deleted
inserted
replaced
| 11021:9673c95895fb | 11022:3e5bc34be734 |
|---|---|
| 135 | 135 |
| 136 local function options_handler(event_data) | 136 local function options_handler(event_data) |
| 137 cors_handler(event_data); | 137 cors_handler(event_data); |
| 138 return ""; | 138 return ""; |
| 139 end | 139 end |
| 140 | |
| 141 local streaming = event.item.streaming_uploads; | |
| 140 | 142 |
| 141 for key, handler in pairs(event.item.route or {}) do | 143 for key, handler in pairs(event.item.route or {}) do |
| 142 local event_name = get_http_event(host, app_path, key); | 144 local event_name = get_http_event(host, app_path, key); |
| 143 if event_name then | 145 if event_name then |
| 144 local method = event_name:match("^%S+"); | 146 local method = event_name:match("^%S+"); |
| 158 end; | 160 end; |
| 159 module:hook_object_event(server, event_name:sub(1, -3), redir_handler, -1); | 161 module:hook_object_event(server, event_name:sub(1, -3), redir_handler, -1); |
| 160 elseif event_name:sub(-1, -1) == "/" then | 162 elseif event_name:sub(-1, -1) == "/" then |
| 161 module:hook_object_event(server, event_name:sub(1, -2), redir_handler, -1); | 163 module:hook_object_event(server, event_name:sub(1, -2), redir_handler, -1); |
| 162 end | 164 end |
| 163 do | 165 if not streaming then |
| 164 -- COMPAT Modules not compatible with streaming uploads behave as before. | 166 -- COMPAT Modules not compatible with streaming uploads behave as before. |
| 165 local _handler = handler; | 167 local _handler = handler; |
| 166 function handler(event) -- luacheck: ignore 432/event | 168 function handler(event) -- luacheck: ignore 432/event |
| 167 if event.request.body ~= false then | 169 if event.request.body ~= false then |
| 168 return _handler(event); | 170 return _handler(event); |