]]--
+local ltn12 = require "luci.ltn12"
+local proto = require "luci.http.protocol"
+local util = require "luci.util"
+local string = require "string"
+local coroutine = require "coroutine"
+
+local pairs, tostring, error = pairs, tostring, error
+
--- LuCI Web Framework high-level HTTP functions.
-module("luci.http", package.seeall)
-local ltn12 = require("luci.ltn12")
-require("luci.http.protocol")
-require("luci.util")
+module "luci.http"
-context = luci.util.threadlocal()
+context = util.threadlocal()
-Request = luci.util.class()
+Request = util.class()
function Request.__init__(self, env, sourcein, sinkerr)
self.input = sourcein
self.error = sinkerr
self.message = {
env = env,
headers = {},
- params = luci.http.protocol.urldecode_params(env.QUERY_STRING or ""),
+ params = protocol.urldecode_params(env.QUERY_STRING or ""),
}
self.parsed_input = false
end
function Request._parse_input(self)
- luci.http.protocol.parse_message_body(
+ protocol.parse_message_body(
self.input,
self.message,
self.filehandler
--- Set the mime type of following content data.
-- @param mime Mimetype of following content
function prepare_content(mime)
- if mime == "application/xhtml+xml" then
- if not getenv("HTTP_ACCEPT") or
- not getenv("HTTP_ACCEPT"):find("application/xhtml+xml", nil, true) then
- mime = "text/html; charset=UTF-8"
+ if not context.headers or not context.headers["content-type"] then
+ if mime == "application/xhtml+xml" then
+ if not getenv("HTTP_ACCEPT") or
+ not getenv("HTTP_ACCEPT"):find("application/xhtml+xml", nil, true) then
+ mime = "text/html; charset=UTF-8"
+ end
+ header("Vary", "Accept")
end
- header("Vary", "Accept")
+ header("Content-Type", mime)
end
- header("Content-Type", mime)
+end
+
+--- Get the RAW HTTP input source
+-- @return HTTP LTN12 source
+function source()
+ return context.request.input
end
--- Set the HTTP status code and status message.
-- @param no_plus Don't decode + to " "
-- @return URL-decoded string
-- @see urlencode
-urldecode = luci.http.protocol.urldecode
+urldecode = protocol.urldecode
--- Return the URL-encoded equivalent of a string.
-- @param str Source string
-- @return URL-encoded string
-- @see urldecode
-urlencode = luci.http.protocol.urlencode
+urlencode = protocol.urlencode