Splitted SERVER_CONTENT_NEGOTIATION in 4 differents classes for each kind of negotiation Changed to use ITERABLE over LIST for supported variants arguments Factorized some code for http parameter parsing such as q=1.0;note="blabla" and so on Integrated within EWF
88 lines
3.1 KiB
Plaintext
88 lines
3.1 KiB
Plaintext
note
|
|
description : "eMIME application root class"
|
|
date : "$Date$"
|
|
revision : "$Revision$"
|
|
|
|
class
|
|
APPLICATION
|
|
|
|
inherit
|
|
ARGUMENTS
|
|
|
|
create
|
|
make
|
|
|
|
feature {NONE} -- Initialization
|
|
|
|
make
|
|
local
|
|
mime_parse : HTTP_ACCEPT_MEDIA_TYPE_UTILITIES
|
|
accept : STRING
|
|
charset_parse : HTTP_ANY_ACCEPT_HEADER_UTILITIES
|
|
language : HTTP_ACCEPT_LANGUAGE_UTILITIES
|
|
do
|
|
create mime_parse
|
|
-- parse_result := mime_parse.parse_mime_type ("application/xhtml;q=0.5")
|
|
-- print ("%N"+parse_result.out)
|
|
|
|
-- parse_result := mime_parse.parse_media_range ("application/xml;q=1")
|
|
-- print ("%N"+parse_result.out)
|
|
-- check
|
|
-- "('application', 'xml', {'q':'1',})" ~ mime_parse.parse_media_range ("application/xml;q=1").out
|
|
-- end
|
|
|
|
-- parse_result := mime_parse.parse_media_range ("application/xml")
|
|
-- print ("%N"+parse_result.out)
|
|
-- check
|
|
-- "('application', 'xml', {'q':'1',})" ~ mime_parse.parse_media_range ("application/xml;q=1").out
|
|
-- end
|
|
-- assertEquals("('application', 'xml', {'q':'1',})", MIMEParse
|
|
-- .parseMediaRange("application/xml").toString());
|
|
-- assertEquals("('application', 'xml', {'q':'1',})", MIMEParse
|
|
-- .parseMediaRange("application/xml;q=").toString());
|
|
-- assertEquals("('application', 'xml', {'q':'1',})", MIMEParse
|
|
-- .parseMediaRange("application/xml ; q=").toString());
|
|
-- assertEquals("('application', 'xml', {'b':'other','q':'1',})",
|
|
-- MIMEParse.parseMediaRange("application/xml ; q=1;b=other")
|
|
-- .toString());
|
|
-- assertEquals("('application', 'xml', {'b':'other','q':'1',})",
|
|
-- MIMEParse.parseMediaRange("application/xml ; q=2;b=other")
|
|
-- .toString());
|
|
-- // Java URLConnection class sends an Accept header that includes a
|
|
-- // single *
|
|
-- assertEquals("('*', '*', {'q':'.2',})", MIMEParse.parseMediaRange(
|
|
-- " *; q=.2").toString());
|
|
|
|
accept := "application/atom+xml;q=1.0,application/xml;q=0.6,text/html"
|
|
print ("%N"+mime_parse.quality ("text/html;q=1.0", accept).out)
|
|
print ("%N"+mime_parse.quality ("application/xml", accept).out)
|
|
print ("%N"+mime_parse.quality ("*/*;q=0.1", accept).out)
|
|
|
|
accept := "application/atom+xml"
|
|
print ("%N"+mime_parse.media_type (accept).out)
|
|
create charset_parse
|
|
accept := "iso-8859-5"
|
|
print ("%N" + charset_parse.header (accept).out)
|
|
accept := "unicode-1-1;q=0.8"
|
|
print ("%N" + charset_parse.header (accept).out)
|
|
|
|
|
|
accept:= "iso-8859-5, unicode-1-1;q=0.8"
|
|
print ("%N"+ charset_parse.quality ("iso-8859-5", accept).out)
|
|
print ("%N"+ charset_parse.quality ("unicode-1-1", accept).out)
|
|
print ("%N"+ charset_parse.quality ("iso-8859-1", accept).out)
|
|
|
|
|
|
create language
|
|
accept :="da, en-gb;q=0.8, en;q=0.7"
|
|
print (language.best_match (accept.split (','), "da"))
|
|
print (language.best_match (accept.split (','), "en-*"))
|
|
|
|
print ("%N"+language.accept_language ("da").out)
|
|
print ("%N"+language.accept_language ("en-gb;q=0.8").out)
|
|
print ("%N"+language.accept_language ("en;q=0.7").out)
|
|
print ("%N"+language.accept_language ("en-*").out)
|
|
end
|
|
|
|
end
|