diff --git a/src/server/request_context.cpp b/src/server/request_context.cpp index 9e0b965c0..91ff7a72d 100644 --- a/src/server/request_context.cpp +++ b/src/server/request_context.cpp @@ -202,21 +202,12 @@ std::string RequestContext::get_user_language() const return userlang.lang; } -bool RequestContext::user_language_comes_from_cookie() const -{ - return userlang.selectedBy == UserLanguage::SelectorKind::COOKIE; -} - RequestContext::UserLanguage RequestContext::determine_user_language() const { try { return {UserLanguage::SelectorKind::QUERY_PARAM, get_argument("userlang")}; } catch(const std::out_of_range&) {} - try { - return {UserLanguage::SelectorKind::COOKIE, cookies.at("userlang")}; - } catch(const std::out_of_range&) {} - try { const std::string acceptLanguage = get_header("Accept-Language"); const auto userLangPrefs = parseUserLanguagePreferences(acceptLanguage); diff --git a/src/server/request_context.h b/src/server/request_context.h index 081b699b9..d5ab7b515 100644 --- a/src/server/request_context.h +++ b/src/server/request_context.h @@ -119,15 +119,12 @@ class RequestContext { std::string get_user_language() const; std::string get_requested_format() const; - bool user_language_comes_from_cookie() const; - private: // types struct UserLanguage { enum SelectorKind { QUERY_PARAM, - COOKIE, ACCEPT_LANGUAGE_HEADER, DEFAULT }; diff --git a/src/server/response.cpp b/src/server/response.cpp index db20a2fb4..bc8c85e51 100644 --- a/src/server/response.cpp +++ b/src/server/response.cpp @@ -387,13 +387,6 @@ MHD_Result Response::send(const RequestContext& request, MHD_Connection* connect MHD_add_response_header(response, p.first.c_str(), p.second.c_str()); } - if ( ! request.user_language_comes_from_cookie() ) { - const std::string cookie = "userlang=" + request.get_user_language() - + ";Path=" + request.get_root_path() - + ";Max-Age=31536000"; - MHD_add_response_header(response, MHD_HTTP_HEADER_SET_COOKIE, cookie.c_str()); - } - if (m_returnCode == MHD_HTTP_OK && m_byteRange.kind() == ByteRange::RESOLVED_PARTIAL_CONTENT) m_returnCode = MHD_HTTP_PARTIAL_CONTENT; diff --git a/test/server.cpp b/test/server.cpp index 958d01cb0..520f89ce3 100644 --- a/test/server.cpp +++ b/test/server.cpp @@ -1130,7 +1130,6 @@ TEST_F(ServerTest, UserLanguageControl) const std::string url; const std::string acceptLanguageHeader; const char* const requestCookie; // Cookie: header of the request - const char* const responseSetCookie; // Set-Cookie: header of the response const std::string expectedH1; operator TestContext() const @@ -1157,7 +1156,6 @@ TEST_F(ServerTest, UserLanguageControl) /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article", /*Accept-Language:*/ "", /*Request Cookie:*/ NO_COOKIE, - /*Response Set-Cookie:*/ "userlang=en;Path=/ROOT%23%3F;Max-Age=31536000", /* expected

*/ "Not Found" }, { @@ -1165,7 +1163,6 @@ TEST_F(ServerTest, UserLanguageControl) /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article?userlang=en", /*Accept-Language:*/ "", /*Request Cookie:*/ NO_COOKIE, - /*Response Set-Cookie:*/ "userlang=en;Path=/ROOT%23%3F;Max-Age=31536000", /* expected

*/ "Not Found" }, { @@ -1173,7 +1170,6 @@ TEST_F(ServerTest, UserLanguageControl) /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article?userlang=test", /*Accept-Language:*/ "", /*Request Cookie:*/ NO_COOKIE, - /*Response Set-Cookie:*/ "userlang=test;Path=/ROOT%23%3F;Max-Age=31536000", /* expected

*/ "[I18N TESTING] Content not found, but at least the server is alive" }, { @@ -1181,7 +1177,6 @@ TEST_F(ServerTest, UserLanguageControl) /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article", /*Accept-Language:*/ "*", /*Request Cookie:*/ NO_COOKIE, - /*Response Set-Cookie:*/ "userlang=en;Path=/ROOT%23%3F;Max-Age=31536000", /* expected

*/ "Not Found" }, { @@ -1189,71 +1184,20 @@ TEST_F(ServerTest, UserLanguageControl) /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article", /*Accept-Language:*/ "test", /*Request Cookie:*/ NO_COOKIE, - /*Response Set-Cookie:*/ "userlang=test;Path=/ROOT%23%3F;Max-Age=31536000", /* expected

*/ "[I18N TESTING] Content not found, but at least the server is alive" }, { - "userlang cookie is respected", + "userlang cookie is ignored", /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article", /*Accept-Language:*/ "", /*Request Cookie:*/ "userlang=test", - /*Response Set-Cookie:*/ NO_COOKIE, - /* expected

*/ "[I18N TESTING] Content not found, but at least the server is alive" - }, - { - "userlang cookie is correctly parsed", - /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article", - /*Accept-Language:*/ "", - /*Request Cookie:*/ "anothercookie=123; userlang=test", - /*Response Set-Cookie:*/ NO_COOKIE, - /* expected

*/ "[I18N TESTING] Content not found, but at least the server is alive" - }, - { - "userlang cookie is correctly parsed", - /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article", - /*Accept-Language:*/ "", - /*Request Cookie:*/ "userlang=test; anothercookie=abc", - /*Response Set-Cookie:*/ NO_COOKIE, - /* expected

*/ "[I18N TESTING] Content not found, but at least the server is alive" - }, - { - "userlang cookie is correctly parsed", - /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article", - /*Accept-Language:*/ "", - /*Request Cookie:*/ "cookie1=abc; userlang=test; cookie2=xyz", - /*Response Set-Cookie:*/ NO_COOKIE, - /* expected

*/ "[I18N TESTING] Content not found, but at least the server is alive" - }, - { - "Multiple userlang cookies are not a problem", - /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article", - /*Accept-Language:*/ "", - /*Request Cookie:*/ "cookie1=abc; userlang=en; userlang=test; cookie2=xyz", - /*Response Set-Cookie:*/ NO_COOKIE, - /* expected

*/ "[I18N TESTING] Content not found, but at least the server is alive" + /* expected

*/ "Not Found" }, { "userlang query parameter takes precedence over Accept-Language", /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article?userlang=en", /*Accept-Language:*/ "test", /*Request Cookie:*/ NO_COOKIE, - /*Response Set-Cookie:*/ "userlang=en;Path=/ROOT%23%3F;Max-Age=31536000", - /* expected

*/ "Not Found" - }, - { - "userlang query parameter takes precedence over its cookie counterpart", - /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article?userlang=en", - /*Accept-Language:*/ "", - /*Request Cookie:*/ "userlang=test", - /*Response Set-Cookie:*/ "userlang=en;Path=/ROOT%23%3F;Max-Age=31536000", - /* expected

*/ "Not Found" - }, - { - "userlang in cookies takes precedence over Accept-Language", - /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article", - /*Accept-Language:*/ "test", - /*Request Cookie:*/ "userlang=en", - /*Response Set-Cookie:*/ NO_COOKIE, /* expected

*/ "Not Found" }, { @@ -1263,7 +1207,6 @@ TEST_F(ServerTest, UserLanguageControl) /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article", /*Accept-Language:*/ "test;q=0.9, en;q=0.2", /*Request Cookie:*/ NO_COOKIE, - /*Response Set-Cookie:*/ "userlang=test;Path=/ROOT%23%3F;Max-Age=31536000", /* expected

*/ "[I18N TESTING] Content not found, but at least the server is alive" }, { @@ -1273,7 +1216,6 @@ TEST_F(ServerTest, UserLanguageControl) /*url*/ "/ROOT%23%3F/content/zimfile/invalid-article", /*Accept-Language:*/ "test;q=0.2, en;q=0.9", /*Request Cookie:*/ NO_COOKIE, - /*Response Set-Cookie:*/ "userlang=en;Path=/ROOT%23%3F;Max-Age=31536000", /* expected

*/ "Not Found" }, }; @@ -1289,12 +1231,7 @@ TEST_F(ServerTest, UserLanguageControl) headers.insert({"Cookie", t.requestCookie}); } const auto r = zfs1_->GET(t.url.c_str(), headers); - if ( t.responseSetCookie ) { - ASSERT_TRUE(r->has_header("Set-Cookie")) << t; - EXPECT_EQ(t.responseSetCookie, getHeaderValue(r->headers, "Set-Cookie")) << t; - } else { - EXPECT_FALSE(r->has_header("Set-Cookie")); - } + EXPECT_FALSE(r->has_header("Set-Cookie")); std::regex_search(r->body, h1Match, h1Regex); const std::string h1(h1Match[1]); EXPECT_EQ(h1, t.expectedH1) << t;