2022-03-03 10:42:14 (UTC-03:00)
Marcel Rodrigues <marcelgmr@gmail.com>
add app:mount()
diff --git a/src/app.lua b/src/app.lua index e402eee..9c48a34 100644 --- a/src/app.lua +++ b/src/app.lua @@ -11,11 +11,26 @@ function App:run(port) self.server:run(port) end +function App:mount(prefix, app) + if prefix:sub(#prefix) ~= "/" then + prefix = prefix .. "/" + end + table.insert(self.mounts, {prefix, app}) +end + local function new_app(routes) local obj = setmetatable({}, App) obj.routes = routes or {} + obj.mounts = {} obj.server = http.new_http() function obj.server:process(req) + for i, mount in ipairs(obj.mounts) do + local prefix, app = unpack(mount) + if (req.path.."/"):sub(1, #prefix) == prefix then + req.path = req.path:sub(#prefix) + return app.server:process(req) + end + end for i, route in ipairs(obj.routes) do local method, pattern, func = unpack(route) if req.method == method then