webmcp

annotate framework/env/request/__init.lua @ 212:47ebf4213716

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

Impressum / About Us