projects
/
project
/
luci.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
1245a9e
)
* luci/libs/http: use a more flexible aproach when storing multi-value fields
author
Jo-Philipp Wich
<jow@openwrt.org>
Mon, 14 Jul 2008 17:02:22 +0000
(17:02 +0000)
committer
Jo-Philipp Wich
<jow@openwrt.org>
Mon, 14 Jul 2008 17:02:22 +0000
(17:02 +0000)
libs/http/luasrc/http/protocol.lua
patch
|
blob
|
history
diff --git
a/libs/http/luasrc/http/protocol.lua
b/libs/http/luasrc/http/protocol.lua
index
cb5f786
..
2213574
100644
(file)
--- a/
libs/http/luasrc/http/protocol.lua
+++ b/
libs/http/luasrc/http/protocol.lua
@@
-113,32
+113,26
@@
end
-- Parameter helper
local function __initval( tbl, key )
-- Parameter helper
local function __initval( tbl, key )
- local multival = ( key:sub( #key - 1, #key ) == "[]" )
-
- if multival then
- if type(tbl[key]) == "table" then
- table.insert( tbl[key], "" )
- else
- tbl[key] = { "" }
- end
- else
+ if tbl[key] == nil then
tbl[key] = ""
tbl[key] = ""
+ elseif type(tbl[key]) == "string" then
+ tbl[key] = { tbl[key], "" }
+ else
+ table.insert( tbl[key], "" )
end
end
-
- return multival
end
end
-local function __appendval( tbl, key,
multival,
chunk )
- if
multival
then
+local function __appendval( tbl, key, chunk )
+ if
type(tbl[key]) == "table"
then
tbl[key][#tbl[key]] = tbl[key][#tbl[key]] .. chunk
else
tbl[key] = tbl[key] .. chunk
end
end
tbl[key][#tbl[key]] = tbl[key][#tbl[key]] .. chunk
else
tbl[key] = tbl[key] .. chunk
end
end
-local function __finishval( tbl, key,
multival,
handler )
+local function __finishval( tbl, key, handler )
if handler then
if handler then
- if
multival
then
+ if
type(tbl[key]) == "table"
then
tbl[key][#tbl[key]] = handler( tbl[key][#tbl[key]] )
else
tbl[key] = handler( tbl[key] )
tbl[key][#tbl[key]] = handler( tbl[key][#tbl[key]] )
else
tbl[key] = handler( tbl[key] )
@@
-321,9
+315,10
@@
process_states['mime-headers'] = function( msg, chunk, filecb )
-- Treat as form field
else
-- Treat as form field
else
- local mv = __initval( msg.params, field )
+ __initval( msg.params, field )
+
msg._mimecallback = function(chunk,eof)
msg._mimecallback = function(chunk,eof)
- __appendval( msg.params, field,
mv,
chunk )
+ __appendval( msg.params, field, chunk )
end
end
end
end
@@
-475,13
+470,14
@@
process_states['urldecode-key'] = function( msg, chunk, filecb )
filecb( field, chunk, eof )
end
else
filecb( field, chunk, eof )
end
else
- local mv = __initval( msg.params, key )
+ __initval( msg.params, key )
+
msg._urldeccallback = function( chunk, eof )
msg._urldeccallback = function( chunk, eof )
- __appendval( msg.params, key,
mv,
chunk )
+ __appendval( msg.params, key, chunk )
-- FIXME: Use a filter
if eof then
-- FIXME: Use a filter
if eof then
- __finishval( msg.params, key,
mv,
urldecode )
+ __finishval( msg.params, key, urldecode )
end
end
end
end
end
end