Merge 0.9->trunk
[prosody.git] / plugins / mod_http_files.lua
index 311b3a4b950e504ebf9a3e2804f4cfb4792ae478..915bec58b56b28a1e6a6a1f0250c1f25bf0b3ad1 100644 (file)
@@ -51,6 +51,9 @@ end
 local cache = setmetatable({}, { __mode = "kv" }); -- Let the garbage collector have it if it wants to.
 
 function serve(opts)
+       if type(opts) ~= "table" then -- assume path string
+               opts = { path = opts };
+       end
        local base_path = opts.path;
        local dir_indices = opts.index_files or dir_indices;
        local directory_index = opts.directory_index;
@@ -114,7 +117,7 @@ function serve(opts)
                                module:log("debug", "Could not open or read %s. Error was %s", full_path, err);
                                return 403;
                        end
-                       local ext = orig_path:match("%.([^./]+)$");
+                       local ext = full_path:match("%.([^./]+)$");
                        local content_type = ext and mime_map[ext];
                        cache[orig_path] = { data = data; content_type = content_type; etag = etag };
                        response_headers.content_type = content_type;
@@ -126,6 +129,14 @@ function serve(opts)
        return serve_file;
 end
 
+function wrap_route(routes)
+       for route,handler in pairs(routes) do
+               if type(handler) ~= "function" then
+                       routes[route] = serve(handler);
+               end
+       end
+       return routes;
+end
 
 if base_path then
        module:provides("http", {