Merge branch 'master' of github.com:EiffelWebFramework/EWF

This commit is contained in:
2013-10-18 21:05:26 +02:00
4 changed files with 61 additions and 3 deletions

View File

@@ -34,7 +34,7 @@ feature -- Initialization
set_charset_default (a_charset)
set_encoding_default (a_encoding)
ensure
mime_default_set: mime = a_mime
mime_default_set: mime_default = a_mime
language_default_set: language_default = a_language
charset_default_set: charset_default = a_charset
encoding_default_set: encoding_default = a_encoding

View File

@@ -88,7 +88,8 @@ feature -- Parser
loop
range := parsed_charsets.item_for_iteration
if attached range.field as l_range_common then
if l_target_field.same_string (l_range_common) or l_target_field.same_string ("*") or l_range_common.same_string ("*") then
if l_target_field.same_string (l_range_common) or l_target_field.same_string ("*") or l_range_common.same_string ("*")
or l_target_field.same_string ("identity") then
if l_range_common.same_string (l_target_field) then
l_fitness := 100
else

View File

@@ -123,6 +123,61 @@ feature -- Test routines
assert ("Variants is dettached",compression_variants.supported_variants = Void)
assert ("Variant Header", compression_variants.variant_header.is_equal ("Accept-Encoding"))
assert ("Encoding Type is gzip", compression_variants.type.is_equal ("gzip"))
-- Scenario 4, the server set `identity' and the client doesn't mention identity
l_compression := "identity"
compression_supported := l_compression.split(',')
conneg.set_encoding_default("gzip")
compression_variants := conneg.encoding_preference (compression_supported, "gzip;q=0.7")
assert ("Expected Acceptable", compression_variants.is_acceptable)
assert ("Variants is dettached",compression_variants.supported_variants = Void)
assert ("Variant Header", compression_variants.variant_header.is_equal ("Accept-Encoding"))
assert ("Encoding Type is identity", compression_variants.type.is_equal ("identity"))
-- Scenario 5, the server set `identity' and the client mention identity,q=0
l_compression := "identity"
compression_supported := l_compression.split(',')
conneg.set_encoding_default("gzip")
compression_variants := conneg.encoding_preference (compression_supported, "identity;q=0")
assert ("Expected Not Acceptable", not compression_variants.is_acceptable)
assert ("Variants is attached",attached compression_variants.supported_variants )
assert ("Variant Header is void", compression_variants.variant_header = Void)
assert ("Encoding Type is Void", compression_variants.type = Void)
-- Scenario 6, the server set `identity' and the client mention *,q=0
l_compression := "identity"
compression_supported := l_compression.split(',')
conneg.set_encoding_default("gzip")
compression_variants := conneg.encoding_preference (compression_supported, "*;q=0")
assert ("Expected Not Acceptable", not compression_variants.is_acceptable)
assert ("Variants is attached",attached compression_variants.supported_variants )
assert ("Variant Header is void", compression_variants.variant_header = Void)
assert ("Encoding Type is Void", compression_variants.type = Void)
-- Scenario 7, the server set `identity' and the client mention identity;q=0.5, gzip;q=0.7,compress
l_compression := "identity"
compression_supported := l_compression.split(',')
conneg.set_encoding_default("gzip")
compression_variants := conneg.encoding_preference (compression_supported, "identity;q=0.5, gzip;q=0.7,compress")
assert ("Expected Acceptable",compression_variants.is_acceptable)
assert ("Variants is void",compression_variants.supported_variants = Void)
assert ("Variant Header", compression_variants.variant_header.is_equal ("Accept-Encoding"))
assert ("Encoding Type is identity", compression_variants.type.is_equal ("identity"))
-- Scenario 8, the server set `identity' and the client mention identity;q=0.5
l_compression := "identity"
compression_supported := l_compression.split(',')
conneg.set_encoding_default("gzip")
compression_variants := conneg.encoding_preference (compression_supported, "identity;q=0.5")
assert ("Expected Acceptable",compression_variants.is_acceptable)
assert ("Variants is void",compression_variants.supported_variants = Void)
assert ("Variant Header", compression_variants.variant_header.is_equal ("Accept-Encoding"))
assert ("Encoding Type is identity", compression_variants.type.is_equal ("identity"))
end

View File

@@ -484,6 +484,8 @@ feature -- Execution
check_resource_exists (req, a_helper)
if a_helper.resource_exists then
a_helper.execute_existing_resource (req, res, Current)
elseif req.error_handler.has_error then
a_helper.write_error_response (req, res)
else
if attached req.http_if_match as l_if_match and then l_if_match.same_string ("*") then
a_helper.handle_precondition_failed (req, res)