aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp
diff options
context:
space:
mode:
authoruzhas <uzhas@ydb.tech>2022-10-04 11:37:37 +0300
committeruzhas <uzhas@ydb.tech>2022-10-04 11:37:37 +0300
commit5022741aa2ff5ed64a52cd6b58ec20d36d34dc3b (patch)
treee456555d16f81cb7148e1febd4036e56dba382c6 /library/cpp
parentfe82ac7c9e6d41a24ec601abf1413ba28e10c067 (diff)
downloadydb-5022741aa2ff5ed64a52cd6b58ec20d36d34dc3b.tar.gz
support content-type in GET
Diffstat (limited to 'library/cpp')
-rw-r--r--library/cpp/actors/http/http.cpp2
-rw-r--r--library/cpp/actors/http/http_ut.cpp25
2 files changed, 26 insertions, 1 deletions
diff --git a/library/cpp/actors/http/http.cpp b/library/cpp/actors/http/http.cpp
index 7da6ace0b9..7057689b52 100644
--- a/library/cpp/actors/http/http.cpp
+++ b/library/cpp/actors/http/http.cpp
@@ -69,7 +69,7 @@ bool THttpParser<THttpRequest, TSocketBuffer>::HaveBody() const {
if (!Body.empty()) {
return true;
}
- return (!ContentType.empty() || !ContentLength.empty() || !TransferEncoding.empty());
+ return !ContentLength.empty() || !TransferEncoding.empty();
}
template <>
diff --git a/library/cpp/actors/http/http_ut.cpp b/library/cpp/actors/http/http_ut.cpp
index 90efd09015..91921c9120 100644
--- a/library/cpp/actors/http/http_ut.cpp
+++ b/library/cpp/actors/http/http_ut.cpp
@@ -50,6 +50,18 @@ Y_UNIT_TEST_SUITE(HttpProxy) {
UNIT_ASSERT_EQUAL(request->Headers, "Host: test\r\nSome-Header: 32344\r\n\r\n");
}
+ Y_UNIT_TEST(GetWithSpecifiedContentType) {
+ NHttp::THttpIncomingRequestPtr request = new NHttp::THttpIncomingRequest();
+ EatWholeString(request, "GET /test HTTP/1.1\r\nHost: test\r\nContent-Type: application/json\r\nSome-Header: 32344\r\n\r\n");
+ UNIT_ASSERT_EQUAL(request->Stage, NHttp::THttpIncomingRequest::EParseStage::Done);
+ UNIT_ASSERT_EQUAL(request->Method, "GET");
+ UNIT_ASSERT_EQUAL(request->URL, "/test");
+ UNIT_ASSERT_EQUAL(request->Protocol, "HTTP");
+ UNIT_ASSERT_EQUAL(request->Version, "1.1");
+ UNIT_ASSERT_EQUAL(request->Host, "test");
+ UNIT_ASSERT_EQUAL(request->Headers, "Host: test\r\nContent-Type: application/json\r\nSome-Header: 32344\r\n\r\n");
+ }
+
Y_UNIT_TEST(BasicParsingChunkedBodyRequest) {
NHttp::THttpIncomingRequestPtr request = new NHttp::THttpIncomingRequest();
EatWholeString(request, "POST /Url HTTP/1.1\r\nConnection: close\r\nTransfer-Encoding: chunked\r\n\r\n4\r\nthis\r\n4\r\n is \r\n5\r\ntest.\r\n0\r\n\r\n");
@@ -63,6 +75,19 @@ Y_UNIT_TEST_SUITE(HttpProxy) {
UNIT_ASSERT_EQUAL(request->Body, "this is test.");
}
+ Y_UNIT_TEST(BasicPost) {
+ NHttp::THttpIncomingRequestPtr request = new NHttp::THttpIncomingRequest();
+ EatWholeString(request, "POST /Url HTTP/1.1\r\nConnection: close\r\nContent-Length: 13\r\n\r\nthis is test.");
+ UNIT_ASSERT_EQUAL(request->Stage, NHttp::THttpIncomingRequest::EParseStage::Done);
+ UNIT_ASSERT_EQUAL(request->Method, "POST");
+ UNIT_ASSERT_EQUAL(request->URL, "/Url");
+ UNIT_ASSERT_EQUAL(request->Connection, "close");
+ UNIT_ASSERT_EQUAL(request->Protocol, "HTTP");
+ UNIT_ASSERT_EQUAL(request->Version, "1.1");
+ UNIT_ASSERT_EQUAL(request->TransferEncoding, "");
+ UNIT_ASSERT_EQUAL(request->Body, "this is test.");
+ }
+
Y_UNIT_TEST(BasicParsingChunkedBodyResponse) {
NHttp::THttpOutgoingRequestPtr request = nullptr; //new NHttp::THttpOutgoingRequest();
NHttp::THttpIncomingResponsePtr response = new NHttp::THttpIncomingResponse(request);