webmcp

annotate framework/env/request/default_router.lua @ 357:ffdd32b48296

Bugfix in request.get_param_strings{...} which caused an empty table to be returned
author jbe
date Thu Mar 26 20:09:13 2015 +0100 (2015-03-26)
parents 169dfbd0246a
children 545ec2e3eafa
rev   line source
jbe@216 1 --[[--
jbe@216 2 route =
jbe@216 3 request.default_router(
jbe@216 4 path -- URL path, including a leading slash
jbe@216 5 )
jbe@210 6
jbe@216 7 Default conversion from a path to a route. Called by request.router().
jbe@216 8
jbe@216 9 --]]--
jbe@215 10
jbe@215 11 function request.default_router(path)
jbe@216 12 if not path then
jbe@216 13 return nil
jbe@216 14 end
jbe@221 15 if path == "" then
jbe@216 16 return {module = "index", view = "index"}
jbe@216 17 end
jbe@347 18 local static = string.match(path, "^static/([-./0-9A-Z_a-z]*)$")
jbe@250 19 if static then
jbe@347 20 -- TODO: move sanitizer to request.handler(...)
jbe@347 21 if string.match(static, "^/") or string.match(static, "//") then
jbe@250 22 return nil
jbe@250 23 end
jbe@347 24 for element in string.gmatch(static, "[^/]+") do
jbe@347 25 if element == "." or element == ".." then
jbe@347 26 return nil
jbe@347 27 end
jbe@347 28 end
jbe@347 29 return {static = static}
jbe@250 30 end
jbe@250 31 local module, action, view, id, suffix
jbe@221 32 module = string.match(path, "^([^/]+)/$")
jbe@216 33 if module then
jbe@216 34 return {module = module, view = "index"}
jbe@215 35 end
jbe@221 36 module, action = string.match(path, "^([^/]+)/([^/.]+)$")
jbe@216 37 if module then
jbe@216 38 return {module = module, action = action}
jbe@215 39 end
jbe@221 40 module, view, suffix = string.match(path, "^([^/]+)/([^/.]+)%.([^/]+)$")
jbe@216 41 if module then
jbe@216 42 return {module = module, view = view, suffix = suffix}
jbe@216 43 end
jbe@221 44 module, view, id, suffix = string.match(path, "^([^/]+)/([^/]+)/([^/.]+)%.([^/]+)$")
jbe@216 45 if module then
jbe@216 46 return {module = module, view = view, id = id, suffix = suffix}
jbe@216 47 end
jbe@216 48 return nil
jbe@216 49 end
jbe@210 50
jbe@216 51 --//--

Impressum / About Us