mirror of https://git.openwrt.org/project/luci.git
* luci/libs: http.protocol: split parse_message() in parse_message_header() and parse_message_body()
This commit is contained in:
parent
a80f704e37
commit
647bc44868
|
@ -327,6 +327,20 @@ end
|
|||
-- Parse a http message
|
||||
function parse_message( data, filecb )
|
||||
|
||||
local reader = _linereader( data )
|
||||
local message = parse_message_header( reader )
|
||||
|
||||
if message then
|
||||
parse_message_body( reader, message, filecb )
|
||||
end
|
||||
|
||||
return message
|
||||
end
|
||||
|
||||
|
||||
-- Parse a http message header
|
||||
function parse_message_header( data )
|
||||
|
||||
-- Create a line reader
|
||||
local reader = _linereader( data )
|
||||
local message = { }
|
||||
|
@ -368,8 +382,50 @@ function parse_message( data, filecb )
|
|||
message.params = { }
|
||||
end
|
||||
|
||||
-- Populate common environment variables
|
||||
message.env = {
|
||||
CONTENT_LENGTH = hdrs['Content-Length'];
|
||||
CONTENT_TYPE = hdrs['Content-Type'];
|
||||
REQUEST_METHOD = message.request_method;
|
||||
REQUEST_URI = message.request_uri;
|
||||
SCRIPT_NAME = message.request_uri:gsub("?.+$","");
|
||||
SCRIPT_FILENAME = "" -- XXX implement me
|
||||
}
|
||||
|
||||
-- Populate HTTP_* environment variables
|
||||
for i, hdr in ipairs( {
|
||||
'Accept',
|
||||
'Accept-Charset',
|
||||
'Accept-Encoding',
|
||||
'Accept-Language',
|
||||
'Connection',
|
||||
'Cookie',
|
||||
'Host',
|
||||
'Referer',
|
||||
'User-Agent',
|
||||
} ) do
|
||||
local var = 'HTTP_' .. hdr:upper():gsub("%-","_")
|
||||
local val = hdrs[hdr]
|
||||
|
||||
message.env[var] = val
|
||||
end
|
||||
|
||||
|
||||
return message
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- Parse a http message body
|
||||
function parse_message_body( reader, message, filecb )
|
||||
|
||||
if type(message) == "table" then
|
||||
|
||||
local hdrs = message.headers
|
||||
|
||||
-- Process post method
|
||||
if method == "post" and hdrs['Content-Type'] then
|
||||
if message.request_method == "post" and hdrs['Content-Type'] then
|
||||
|
||||
-- Is it multipart/form-data ?
|
||||
if hdrs['Content-Type']:match("^multipart/form%-data") then
|
||||
|
@ -432,41 +488,10 @@ function parse_message( data, filecb )
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Populate common environment variables
|
||||
message.env = {
|
||||
CONTENT_LENGTH = hdrs['Content-Length'];
|
||||
CONTENT_TYPE = hdrs['Content-Type'];
|
||||
REQUEST_METHOD = message.request_method;
|
||||
REQUEST_URI = message.request_uri;
|
||||
SCRIPT_NAME = message.request_uri:gsub("?.+$","");
|
||||
SCRIPT_FILENAME = "" -- XXX implement me
|
||||
}
|
||||
|
||||
-- Populate HTTP_* environment variables
|
||||
for i, hdr in ipairs( {
|
||||
'Accept',
|
||||
'Accept-Charset',
|
||||
'Accept-Encoding',
|
||||
'Accept-Language',
|
||||
'Connection',
|
||||
'Cookie',
|
||||
'Host',
|
||||
'Referer',
|
||||
'User-Agent',
|
||||
} ) do
|
||||
local var = 'HTTP_' .. hdr:upper():gsub("%-","_")
|
||||
local val = hdrs[hdr]
|
||||
|
||||
message.env[var] = val
|
||||
end
|
||||
|
||||
|
||||
return message
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function _linereader( obj )
|
||||
|
||||
-- object is string
|
||||
|
|
Loading…
Reference in New Issue