diff options
author | uzhas <uzhas@ydb.tech> | 2022-10-04 11:37:37 +0300 |
---|---|---|
committer | uzhas <uzhas@ydb.tech> | 2022-10-04 11:37:37 +0300 |
commit | 5022741aa2ff5ed64a52cd6b58ec20d36d34dc3b (patch) | |
tree | e456555d16f81cb7148e1febd4036e56dba382c6 /library/cpp | |
parent | fe82ac7c9e6d41a24ec601abf1413ba28e10c067 (diff) | |
download | ydb-5022741aa2ff5ed64a52cd6b58ec20d36d34dc3b.tar.gz |
support content-type in GET
Diffstat (limited to 'library/cpp')
-rw-r--r-- | library/cpp/actors/http/http.cpp | 2 | ||||
-rw-r--r-- | library/cpp/actors/http/http_ut.cpp | 25 |
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); |