reuse implementation from WSF_REQUEST to get input data for MIME handlers.

This commit is contained in:
Jocelyn Fiat
2013-03-29 17:50:34 +01:00
parent 8647ae1cd3
commit a8a3f3cb8b
3 changed files with 8 additions and 46 deletions

View File

@@ -52,7 +52,7 @@ feature {NONE} -- Implementation: Form analyzer
require require
a_content_type_valid: a_content_type /= Void and not a_content_type.has_error a_content_type_valid: a_content_type /= Void and not a_content_type.has_error
s_attached: s /= Void s_attached: s /= Void
same_content_length: req.content_length_value > 0 implies req.content_length_value.as_integer_32 = s.count same_content_length: req.content_length_value > 0 implies req.content_length_value.as_integer_32 <= s.count
vars_attached: vars /= Void vars_attached: vars /= Void
local local
p,i,next_b: INTEGER p,i,next_b: INTEGER

View File

@@ -9,42 +9,10 @@ deferred class
feature {NONE} -- Implementation feature {NONE} -- Implementation
full_input_data (req: WSF_REQUEST): READABLE_STRING_8 full_input_data (req: WSF_REQUEST): STRING_8
do do
Result := read_input_data (req.input, req.content_length_value) create Result.make (0)
end req.read_input_data_into (Result)
read_input_data (a_input: WGI_INPUT_STREAM; a_content_length: NATURAL_64): STRING_8
-- All data from input form
local
n: INTEGER
t: STRING
do
if a_content_length > 0 then
create Result.make (a_content_length.as_integer_32)
n := a_input.read_to_string (Result, 1, Result.capacity)
check n = a_content_length end
else
from
n := 8_192
create Result.make (n)
until
n = 0
loop
a_input.read_string (n)
t := a_input.last_string
if t.count = 0 then
n := 0
else
if t.count < n then
n := 0
end
Result.append_string (t)
end
end
end
ensure
same_content_length: a_content_length > 0 implies Result.count = a_content_length.as_integer_32
end end
add_string_value_to_table (a_name: READABLE_STRING_8; a_value: READABLE_STRING_8; a_table: HASH_TABLE [WSF_VALUE, READABLE_STRING_GENERAL]) add_string_value_to_table (a_name: READABLE_STRING_8; a_value: READABLE_STRING_8; a_table: HASH_TABLE [WSF_VALUE, READABLE_STRING_GENERAL])

View File

@@ -211,22 +211,16 @@ feature -- Access: Input
until until
n = 0 n = 0
loop loop
l_input.read_string (n) l_input.append_to_string (buf, n)
s := l_input.last_string if l_input.last_appended_count < n then
if s.count = 0 then
n := 0 n := 0
else
if s.count < n then
n := 0
end
buf.append (s)
end end
end end
else else
n := content_length_value.as_integer_32 n := content_length_value.as_integer_32
if n > 0 then if n > 0 then
buf.resize (buf.count + n) l_input.append_to_string (buf, n)
n := l_input.read_to_string (buf, buf.count + 1, n) n := l_input.last_appended_count
check n = content_length_value.as_integer_32 end check n = content_length_value.as_integer_32 end
end end
end end