login

<     >

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