aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp
diff options
context:
space:
mode:
authorav-koshkin <av-koshkin@yandex-team.com>2023-03-22 10:22:20 +0300
committerav-koshkin <av-koshkin@yandex-team.com>2023-03-22 10:22:20 +0300
commit8bd9a86058be461757baaadec45b0c4bd98beba0 (patch)
tree0517d03be8c16cc3247e54f5427157b0100fa0eb /library/cpp
parent62c246b54a5b822ae9049ae9258475748ed3e594 (diff)
downloadydb-8bd9a86058be461757baaadec45b0c4bd98beba0.tar.gz
Allow to AddOrReplace headers from THttpResponse
Diffstat (limited to 'library/cpp')
-rw-r--r--library/cpp/http/server/response.h11
-rw-r--r--library/cpp/http/server/response_ut.cpp25
2 files changed, 36 insertions, 0 deletions
diff --git a/library/cpp/http/server/response.h b/library/cpp/http/server/response.h
index a75cb85605..8b7819de1e 100644
--- a/library/cpp/http/server/response.h
+++ b/library/cpp/http/server/response.h
@@ -32,6 +32,17 @@ public:
return *this;
}
+ template <typename ValueType>
+ THttpResponse& AddOrReplaceHeader(const TString& name, const ValueType& value) {
+ return AddOrReplaceHeader(THttpInputHeader(name, ToString(value)));
+ }
+
+ THttpResponse& AddOrReplaceHeader(const THttpInputHeader& header) {
+ Headers.AddOrReplaceHeader(header);
+
+ return *this;
+ }
+
THttpResponse& AddMultipleHeaders(const THttpHeaders& headers);
const THttpHeaders& GetHeaders() const {
diff --git a/library/cpp/http/server/response_ut.cpp b/library/cpp/http/server/response_ut.cpp
index 73e2112ad3..bdf2fc1c7d 100644
--- a/library/cpp/http/server/response_ut.cpp
+++ b/library/cpp/http/server/response_ut.cpp
@@ -139,4 +139,29 @@ Y_UNIT_TEST_SUITE(TestHttpResponse) {
.SetContentType("text/xml");
UNIT_ASSERT_STRINGS_EQUAL(ToString(resp), EXPECTED);
}
+
+ Y_UNIT_TEST(TestAddOrReplaceHeader) {
+ THttpResponse resp(HTTP_FORBIDDEN);
+ resp.AddOrReplaceHeader(THttpInputHeader("X-Header-1", "ValueOne"));
+ resp.AddOrReplaceHeader("X-Header-2", 10);
+ resp.AddOrReplaceHeader("X-Header-3", true);
+
+ const char* EXPECTED_ADDED = "HTTP/1.1 403 Forbidden\r\n"
+ "X-Header-1: ValueOne\r\n"
+ "X-Header-2: 10\r\n"
+ "X-Header-3: 1\r\n"
+ "\r\n";
+ UNIT_ASSERT_STRINGS_EQUAL(ToString(resp), EXPECTED_ADDED);
+
+ resp.AddOrReplaceHeader(THttpInputHeader("X-Header-1", "ValueTwo"));
+ resp.AddOrReplaceHeader("X-Header-2", 20);
+ resp.AddOrReplaceHeader("X-Header-3", false);
+
+ const char* EXPECTED_REPLACED = "HTTP/1.1 403 Forbidden\r\n"
+ "X-Header-1: ValueTwo\r\n"
+ "X-Header-2: 20\r\n"
+ "X-Header-3: 0\r\n"
+ "\r\n";
+ UNIT_ASSERT_STRINGS_EQUAL(ToString(resp), EXPECTED_REPLACED);
+ }
}