webmcp
annotate framework/env/request/__init.lua @ 110:0c4841af07a5
String truncating by counting Unicode codepoints in format.string(...)
(grapheme cluster boundary detection not implemented)
(grapheme cluster boundary detection not implemented)
author | jbe |
---|---|
date | Sun Jan 12 03:57:47 2014 +0100 (2014-01-12) |
parents | dd21d2e06a95 |
children | 47ebf4213716 |
rev | line source |
---|---|
jbe/bsw@0 | 1 request._status = nil |
jbe/bsw@0 | 2 request._forward = nil |
jbe/bsw@0 | 3 request._forward_processed = false |
jbe/bsw@0 | 4 request._redirect = nil |
jbe/bsw@0 | 5 request._absolute_baseurl = nil |
jbe@97 | 6 request._is_404 = false |
jbe/bsw@0 | 7 request._404_route = nil |
jbe/bsw@0 | 8 request._force_absolute_baseurl = false |
jbe/bsw@0 | 9 request._perm_params = {} |
jbe/bsw@0 | 10 request._csrf_secret = nil |
jbe@1 | 11 request._json_requests_allowed = false |
jbe/bsw@0 | 12 |
jbe@91 | 13 request._params = {} |
jbe/bsw@0 | 14 local depth |
jbe/bsw@0 | 15 if cgi then -- if-clause to support interactive mode |
jbe@97 | 16 if cgi.params._webmcp_404 then |
jbe@97 | 17 request.force_absolute_baseurl() |
jbe@97 | 18 request._is_404 = true |
jbe@97 | 19 end |
jbe@91 | 20 for key, value in pairs(cgi.params) do |
jbe@91 | 21 if not string.match(key, "^_webmcp_") then |
jbe@91 | 22 request._params[key] = value |
jbe@91 | 23 end |
jbe@91 | 24 end |
jbe@91 | 25 local path = cgi.params._webmcp_path |
jbe@91 | 26 if path then |
jbe@91 | 27 local function parse() |
jbe@91 | 28 local module, action, view, suffix, id |
jbe@91 | 29 if path == "" then |
jbe@91 | 30 request._module = "index" |
jbe@91 | 31 request._view = "index" |
jbe@96 | 32 return |
jbe@91 | 33 end |
jbe@91 | 34 module = string.match(path, "^([^/]+)/$") |
jbe@91 | 35 if module then |
jbe@91 | 36 request._module = module |
jbe@91 | 37 request._view = "index" |
jbe@91 | 38 return |
jbe@91 | 39 end |
jbe@91 | 40 module, action = string.match(path, "^([^/]+)/([^/.]+)$") |
jbe@91 | 41 if module then |
jbe@91 | 42 request._module = module |
jbe@91 | 43 request._action = action |
jbe@91 | 44 return |
jbe@91 | 45 end |
jbe@91 | 46 module, view, suffix = string.match(path, "^([^/]+)/([^/.]+)%.([^/]+)$") |
jbe@91 | 47 if module then |
jbe@91 | 48 request._module = module |
jbe@91 | 49 request._view = view |
jbe@91 | 50 request._suffix = suffix |
jbe@91 | 51 return |
jbe@91 | 52 end |
jbe@91 | 53 module, view, id, suffix = string.match(path, "^([^/]+)/([^/]+)/([^/.]+)%.([^/]+)$") |
jbe@91 | 54 if module then |
jbe@91 | 55 request._module = module |
jbe@91 | 56 request._view = view |
jbe@91 | 57 request._id = id |
jbe@91 | 58 request._suffix = suffix |
jbe@91 | 59 return |
jbe@91 | 60 end |
jbe@97 | 61 request._is_404 = true |
jbe@91 | 62 end |
jbe@91 | 63 parse() |
jbe@101 | 64 -- allow id to also be set by "_webmcp_id" parameter |
jbe@101 | 65 if cgi.params._webmcp_id ~= nil then |
jbe@101 | 66 request._id = cgi.params._webmcp_id |
jbe@101 | 67 end |
jbe@97 | 68 depth = 0 |
jbe@97 | 69 for match in string.gmatch(path, "/") do |
jbe@97 | 70 depth = depth + 1 |
jbe@97 | 71 end |
jbe@91 | 72 else |
jbe@91 | 73 request._module = cgi.params._webmcp_module |
jbe@91 | 74 request._action = cgi.params._webmcp_action |
jbe@91 | 75 request._view = cgi.params._webmcp_view |
jbe@91 | 76 request._suffix = cgi.params._webmcp_suffix |
jbe@91 | 77 request._id = cgi.params._webmcp_id |
jbe@96 | 78 depth = tonumber(cgi.params._webmcp_urldepth) |
jbe@91 | 79 end |
jbe/bsw@0 | 80 end |
jbe/bsw@0 | 81 if depth and depth > 0 then |
jbe/bsw@0 | 82 local elements = {} |
jbe/bsw@0 | 83 for i = 1, depth do |
jbe/bsw@0 | 84 elements[#elements+1] = "../" |
jbe/bsw@0 | 85 end |
jbe/bsw@0 | 86 request._relative_baseurl = table.concat(elements) |
jbe/bsw@0 | 87 else |
jbe/bsw@0 | 88 request._relative_baseurl = "./" |
jbe/bsw@0 | 89 end |
jbe/bsw@0 | 90 |
jbe/bsw@0 | 91 request._app_basepath = assert( |
jbe/bsw@0 | 92 os.getenv("WEBMCP_APP_BASEPATH"), |
jbe/bsw@0 | 93 'WEBMCP_APP_BASEPATH is not set.' |
jbe/bsw@0 | 94 ) |
jbe/bsw@0 | 95 if not string.find(request._app_basepath, "/$") then |
jbe/bsw@0 | 96 request._app_basebase = request._app_basepath .. "/" |
jbe/bsw@0 | 97 end |