Fixed Issue #75 CONNEG doesn't handle accept encodings correcty
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
note
|
note
|
||||||
description: "[
|
description: "[
|
||||||
COMMON_ACCEPT_HEADER_PARSER, this class allows to parse Accept-Charset and Accept-Encoding headers
|
COMMON_ACCEPT_HEADER_PARSER, this class allows to parse Accept-Charset and Accept-Encoding headers
|
||||||
|
|
||||||
]"
|
]"
|
||||||
date: "$Date$"
|
date: "$Date$"
|
||||||
revision: "$Revision$"
|
revision: "$Revision$"
|
||||||
@@ -88,7 +88,8 @@ feature -- Parser
|
|||||||
loop
|
loop
|
||||||
range := parsed_charsets.item_for_iteration
|
range := parsed_charsets.item_for_iteration
|
||||||
if attached range.field as l_range_common then
|
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
|
if l_range_common.same_string (l_target_field) then
|
||||||
l_fitness := 100
|
l_fitness := 100
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -123,6 +123,39 @@ feature -- Test routines
|
|||||||
assert ("Variants is dettached",compression_variants.supported_variants = Void)
|
assert ("Variants is dettached",compression_variants.supported_variants = Void)
|
||||||
assert ("Variant Header", compression_variants.variant_header.is_equal ("Accept-Encoding"))
|
assert ("Variant Header", compression_variants.variant_header.is_equal ("Accept-Encoding"))
|
||||||
assert ("Encoding Type is gzip", compression_variants.type.is_equal ("gzip"))
|
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)
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user