Reduce multi-level calls of req.req members
Several places access the members of `req` indirectly like
`req.req.method()`. This can be simplified as `req.method()` .
This would also make the code clearer.
Tested:
- Compiles
- Redfish service validator passes
Change-Id: Ie129564ff907cdea7ac224b1e3d80cc0dedfbd7b
Signed-off-by: Myung Bae <myungbae@us.ibm.com>
diff --git a/http/http2_connection.hpp b/http/http2_connection.hpp
index 4b1b2dc..8416ff7 100644
--- a/http/http2_connection.hpp
+++ b/http/http2_connection.hpp
@@ -434,7 +434,7 @@
close();
return -1;
}
- thisReq.req.method(verb);
+ thisReq.method(verb);
}
else if (nameSv == ":scheme")
{
@@ -442,7 +442,7 @@
}
else
{
- thisReq.req.set(nameSv, valueSv);
+ thisReq.addHeader(nameSv, valueSv);
}
return 0;
}
diff --git a/http/http_request.hpp b/http/http_request.hpp
index a3c8fd8..53f51e6 100644
--- a/http/http_request.hpp
+++ b/http/http_request.hpp
@@ -80,6 +80,10 @@
{
return req.method();
}
+ void method(boost::beast::http::verb verb)
+ {
+ return req.method(verb);
+ }
std::string_view getHeaderValue(std::string_view key) const
{
@@ -91,6 +95,11 @@
return req[key];
}
+ void clearHeader(boost::beast::http::field key)
+ {
+ req.erase(key);
+ }
+
std::string_view methodString() const
{
return req.method_string();
diff --git a/http/websocket.hpp b/http/websocket.hpp
index d232c02..2ef8412 100644
--- a/http/websocket.hpp
+++ b/http/websocket.hpp
@@ -92,7 +92,8 @@
BMCWEB_LOG_DEBUG("starting connection {}", logPtr(this));
using bf = boost::beast::http::field;
- std::string protocolHeader = req.req[bf::sec_websocket_protocol];
+ std::string protocolHeader{
+ req.getHeaderValue(bf::sec_websocket_protocol)};
ws.set_option(boost::beast::websocket::stream_base::decorator(
[session{session},
diff --git a/redfish-core/include/query.hpp b/redfish-core/include/query.hpp
index 5962093..e68b89a 100644
--- a/redfish-core/include/query.hpp
+++ b/redfish-core/include/query.hpp
@@ -46,7 +46,7 @@
return;
}
// Restart the request without if-match
- req.req.erase(boost::beast::http::field::if_match);
+ req.clearHeader(boost::beast::http::field::if_match);
BMCWEB_LOG_DEBUG("Restarting request");
app.handle(req, asyncResp);
}
@@ -74,9 +74,9 @@
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Match
return true;
}
- if (req.req.method() != boost::beast::http::verb::patch &&
- req.req.method() != boost::beast::http::verb::post &&
- req.req.method() != boost::beast::http::verb::delete_)
+ if (req.method() != boost::beast::http::verb::patch &&
+ req.method() != boost::beast::http::verb::post &&
+ req.method() != boost::beast::http::verb::delete_)
{
messages::preconditionFailed(asyncResp->res);
return false;
diff --git a/test/redfish-core/include/utils/json_utils_test.cpp b/test/redfish-core/include/utils/json_utils_test.cpp
index 9245f25..5ef80ee 100644
--- a/test/redfish-core/include/utils/json_utils_test.cpp
+++ b/test/redfish-core/include/utils/json_utils_test.cpp
@@ -297,7 +297,7 @@
crow::Request req("{\"integer\": 1}", ec);
// Ignore errors intentionally
- req.req.set(boost::beast::http::field::content_type, "application/json");
+ req.addHeader(boost::beast::http::field::content_type, "application/json");
int64_t integer = 0;
ASSERT_TRUE(readJsonPatch(req, res, "integer", integer));
@@ -324,7 +324,7 @@
crow::Response res;
std::error_code ec;
crow::Request req(R"({"@odata.etag": "etag", "integer": 1})", ec);
- req.req.set(boost::beast::http::field::content_type, "application/json");
+ req.addHeader(boost::beast::http::field::content_type, "application/json");
// Ignore errors intentionally
std::optional<int64_t> integer = 0;
@@ -352,7 +352,7 @@
crow::Response res;
std::error_code ec;
crow::Request req("{\"integer\": 1}", ec);
- req.req.set(boost::beast::http::field::content_type, "application/json");
+ req.addHeader(boost::beast::http::field::content_type, "application/json");
// Ignore errors intentionally
int64_t integer = 0;
@@ -367,7 +367,7 @@
crow::Response res;
std::error_code ec;
crow::Request req({"{}"}, ec);
- req.req.set(boost::beast::http::field::content_type, "application/json");
+ req.addHeader(boost::beast::http::field::content_type, "application/json");
// Ignore errors intentionally
std::optional<int64_t> integer = 0;