From 887724b536ed92a899d239b3ac954c9ca81c4280 Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Sat, 5 Nov 2016 08:42:26 -0400 Subject: [PATCH] Http_server: Ignore Accept-charset header --- 100_core/src/gplx/core/tests/Gftest.java | 4 ++-- .../gplx/core/net/Http_request_parser.java | 5 ++++- .../core/net/Http_request_parser_tst.java | 20 ++++++++++++++----- .../src/gplx/core/net/Http_server_wtr_.java | 4 ++-- .../core/net/Http_server_wtr__console.java | 5 +++++ .../apps/servers/http/Http_server_mgr.java | 2 +- 6 files changed, 29 insertions(+), 11 deletions(-) diff --git a/100_core/src/gplx/core/tests/Gftest.java b/100_core/src/gplx/core/tests/Gftest.java index 8d8099295..0b59bc388 100644 --- a/100_core/src/gplx/core/tests/Gftest.java +++ b/100_core/src/gplx/core/tests/Gftest.java @@ -64,8 +64,8 @@ public class Gftest { public static void Eq__str(String expd, String actl, String msg_fmt, Object... msg_args) { if (String_.Eq(expd, actl)) return; Write_fail_head(bfr, msg_fmt, msg_args); - bfr.Add_str_a7("expd: ").Add_str_u8(expd).Add_byte_nl(); - bfr.Add_str_a7("actl: ").Add_str_u8(actl).Add_byte_nl(); + bfr.Add_str_a7("expd: ").Add_str_u8_null(expd).Add_byte_nl(); + bfr.Add_str_a7("actl: ").Add_str_u8_null(actl).Add_byte_nl(); bfr.Add(Bry__line_end); throw Err_.new_wo_type(bfr.To_str_and_clear()); } diff --git a/400_xowa/src/gplx/core/net/Http_request_parser.java b/400_xowa/src/gplx/core/net/Http_request_parser.java index 80c22abcb..8b53b8008 100644 --- a/400_xowa/src/gplx/core/net/Http_request_parser.java +++ b/400_xowa/src/gplx/core/net/Http_request_parser.java @@ -84,6 +84,7 @@ public class Http_request_parser { case Tid_pragma: this.pragma = Bry_.Mid(line, val_bgn, line_len); break; case Tid_cache_control: this.cache_control = Bry_.Mid(line, val_bgn, line_len); break; case Tid_origin: this.origin = Bry_.Mid(line, val_bgn, line_len); break; + case Tid_accept_charset: break; default: throw Err_.new_unhandled(tid); } } @@ -146,7 +147,8 @@ public class Http_request_parser { } private String To_str() {return Make_request_itm().To_str(tmp_bfr, Bool_.N);} private static final int Tid_get = 1, Tid_post = 2, Tid_host = 3, Tid_user_agent = 4, Tid_accept = 5, Tid_accept_language = 6, Tid_accept_encoding = 7, Tid_dnt = 8 - , Tid_x_requested_with = 9, Tid_cookie = 10, Tid_referer = 11, Tid_content_length = 12, Tid_content_type = 13, Tid_connection = 14, Tid_pragma = 15, Tid_cache_control = 16, Tid_origin = 17; + , Tid_x_requested_with = 9, Tid_cookie = 10, Tid_referer = 11, Tid_content_length = 12, Tid_content_type = 13, Tid_connection = 14, Tid_pragma = 15, Tid_cache_control = 16 + , Tid_origin = 17, Tid_accept_charset = 18; private static final Btrie_slim_mgr trie = Btrie_slim_mgr.ci_a7() .Add_str_int("GET" , Tid_get) .Add_str_int("POST" , Tid_post) @@ -155,6 +157,7 @@ public class Http_request_parser { .Add_str_int("Accept:" , Tid_accept) .Add_str_int("Accept-Language:" , Tid_accept_language) .Add_str_int("Accept-Encoding:" , Tid_accept_encoding) + .Add_str_int("Accept-Charset:" , Tid_accept_charset) .Add_str_int("DNT:" , Tid_dnt) .Add_str_int("X-Requested-With:" , Tid_x_requested_with) .Add_str_int("Cookie:" , Tid_cookie) diff --git a/400_xowa/src/gplx/core/net/Http_request_parser_tst.java b/400_xowa/src/gplx/core/net/Http_request_parser_tst.java index e9657c0b8..2b4714562 100644 --- a/400_xowa/src/gplx/core/net/Http_request_parser_tst.java +++ b/400_xowa/src/gplx/core/net/Http_request_parser_tst.java @@ -16,9 +16,9 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.core.net; import gplx.*; import gplx.core.*; -import org.junit.*; +import org.junit.*; import gplx.core.tests.*; public class Http_request_parser_tst { - @Before public void init() {fxt.Clear();} private final Http_request_parser_fxt fxt = new Http_request_parser_fxt(); + @Before public void init() {fxt.Clear();} private final Http_request_parser_fxt fxt = new Http_request_parser_fxt(); @Test public void Type_post() { fxt.Test_type_post("POST /url HTTP/1.1", Http_request_itm.Type_post, "/url", "HTTP/1.1"); } @@ -47,15 +47,20 @@ public class Http_request_parser_tst { , fxt.Make_post_data_itm("key1", "val1") ); } + @Test public void Type_accept_charset() { + fxt.Test_ignore("Accept-Charset: ISO-8859-1,utf-8;q=0.7"); + } } class Http_request_parser_fxt { - private final Http_request_parser parser; - private final Http_client_rdr client_rdr = Http_client_rdr_.new_mem(); + private final Http_request_parser parser; + private final Http_client_rdr client_rdr = Http_client_rdr_.new_mem(); + private final Http_server_wtr__mock server_wtr = new Http_server_wtr__mock(); public Http_request_parser_fxt() { - this.parser = new Http_request_parser(Http_server_wtr_.Noop, false); + this.parser = new Http_request_parser(server_wtr, false); } public void Clear() { parser.Clear(); + server_wtr.Clear(); } public Http_post_data_itm Make_post_data_itm(String key, String val) {return new Http_post_data_itm(Bry_.new_u8(key), Bry_.new_u8(val));} public void Test_type_post(String line, int expd_type, String expd_url, String expd_protocol) { @@ -82,4 +87,9 @@ class Http_request_parser_fxt { Tfds.Eq_bry(itm.Val(), expd[i].Val()); } } + public void Test_ignore(String line) { + client_rdr.Stream_(String_.Ary(line)); + parser.Parse(client_rdr); + Gftest.Eq__str(null, server_wtr.Data()); + } } diff --git a/400_xowa/src/gplx/core/net/Http_server_wtr_.java b/400_xowa/src/gplx/core/net/Http_server_wtr_.java index 04181dc9a..019e70eab 100644 --- a/400_xowa/src/gplx/core/net/Http_server_wtr_.java +++ b/400_xowa/src/gplx/core/net/Http_server_wtr_.java @@ -17,6 +17,6 @@ along with this program. If not, see . */ package gplx.core.net; import gplx.*; import gplx.core.*; public class Http_server_wtr_ { - public static Http_server_wtr new_console() {return new Http_server_wtr__console();} - public static final Http_server_wtr Noop = new Http_server_wtr__noop(); + public static Http_server_wtr New__console() {return new Http_server_wtr__console();} + public static final Http_server_wtr Noop = new Http_server_wtr__noop(); } diff --git a/400_xowa/src/gplx/core/net/Http_server_wtr__console.java b/400_xowa/src/gplx/core/net/Http_server_wtr__console.java index b05686fca..e1cdef483 100644 --- a/400_xowa/src/gplx/core/net/Http_server_wtr__console.java +++ b/400_xowa/src/gplx/core/net/Http_server_wtr__console.java @@ -20,3 +20,8 @@ import gplx.core.consoles.*; class Http_server_wtr__console implements Http_server_wtr { public void Write_str_w_nl(String s) {Console_adp__sys.Instance.Write_str_w_nl(s);} } +class Http_server_wtr__mock implements Http_server_wtr { + public void Write_str_w_nl(String s) {data = s;} + public String Data() {return data;} private String data; + public void Clear() {data = null;} +} diff --git a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java index 1e85be7b3..8e9034efa 100644 --- a/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java @@ -48,7 +48,7 @@ public class Http_server_mgr implements Gfo_invk { this.request_parser = new Http_request_parser(server_wtr, false); } public Xoae_app App() {return app;} private final Xoae_app app; - public Http_server_wtr Server_wtr() {return server_wtr;} private final Http_server_wtr server_wtr = Http_server_wtr_.new_console(); + public Http_server_wtr Server_wtr() {return server_wtr;} private final Http_server_wtr server_wtr = Http_server_wtr_.New__console(); public Http_request_parser Request_parser() {return request_parser;} private final Http_request_parser request_parser; public Gfo_url_encoder Encoder() {return encoder;} private final Gfo_url_encoder encoder = Gfo_url_encoder_.New__http_url().Make(); public int Port() {return port;} public Http_server_mgr Port_(int v) {port = v; return this;} private int port = 8080;