FileId:
$Id$
-ToDo:
-- Cookie handling
-
License:
Copyright 2008 Steven Barth <steven@midlink.org>
params = luci.http.protocol.urldecode_params(env.QUERY_STRING or ""),
}
- setmetatable(self.message.params, {__index =
- function(tbl, key)
- setmetatable(tbl, nil)
-
- luci.http.protocol.parse_message_body(
- self.input,
- self.message,
- self.filehandler
- )
-
- return rawget(tbl, key)
- end
- })
+ self.parsed_input = false
end
function Request.formvalue(self, name, default)
+ if not self.parsed_input then
+ self:_parse_input()
+ end
+
if name then
return self.message.params[name] and tostring(self.message.params[name]) or default
else
local vals = {}
prefix = prefix and prefix .. "." or "."
+ if not self.parsed_input then
+ self:_parse_input()
+ end
+
local void = self.message.params[nil]
for k, v in pairs(self.message.params) do
if k:find(prefix, 1, true) == 1 then
return vals
end
+function Request.getcookie(self, name)
+ local c = string.gsub(";" .. (self:getenv("HTTP_COOKIE") or "") .. ";", "%s*;%s*", ";")
+ local p = ";" .. name .. "=(.-);"
+ local i, j, value = cookies:find(p)
+ return value and urldecode(value)
+end
+
function Request.getenv(self, name)
if name then
return self.message.env[name]
self.filehandler = callback
end
+function Request._parse_input(self)
+ luci.http.protocol.parse_message_body(
+ self.input,
+ self.message,
+ self.filehandler
+ )
+ self.parsed_input = true
+end
+
function close()
if not context.eoh then
coroutine.yield(4, content)
end
-
-function basic_auth(realm, errorpage)
- header("Status", "401 Unauthorized")
- header("WWW-Authenticate", string.format('Basic realm="%s"', realm or ""))
-
- if errorpage then
- errorpage()
- end
-
- close()
-end
-
function redirect(url)
header("Status", "302 Found")
header("Location", url)