Take url views by value
Any of our things taking URLs should be taking url_view by value,
similar to how we take string_view.
From the beast documentation:
"...it acts like a string_view in terms of ownership." [1]
Therefore, we should treat it like we treat string_view, and take by value, not reference.
[1] https://www.boost.org/doc/libs/master/libs/url/doc/html/url/ref/boost__urls__url_view.html
Tested:
Stacked these patches. Redfish service validator passes.
Signed-off-by: Ed Tanous <edtanous@google.com>
Change-Id: I696b495f4aa04984225853f653cc175c0eaad79d
diff --git a/.clang-tidy b/.clang-tidy
index bad6111..4e09243 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -316,3 +316,4 @@
- { key: readability-identifier-naming.NamespaceCase, value: lower_case }
- { key: readability-identifier-naming.StructCase, value: CamelCase }
- { key: cppcoreguidelines-macro-usage.AllowedRegexp, value: DEBUG*|NLOHMANN_JSON_SERIALIZE_ENUM }
+ - { key: performance-unnecessary-value-param.AllowedTypes, value: ((segments_view)|(url_view)) }
diff --git a/http/utility.hpp b/http/utility.hpp
index 4e6ed71..fd01bf1 100644
--- a/http/utility.hpp
+++ b/http/utility.hpp
@@ -643,10 +643,10 @@
std::string_view segment;
};
-inline bool readUrlSegments(const boost::urls::url_view& url,
+inline bool readUrlSegments(boost::urls::url_view url,
std::initializer_list<UrlSegment>&& segments)
{
- const boost::urls::segments_view& urlSegments = url.segments();
+ boost::urls::segments_view urlSegments = url.segments();
if (!urlSegments.is_absolute())
{
@@ -687,16 +687,16 @@
} // namespace details
template <typename... Args>
-inline bool readUrlSegments(const boost::urls::url_view& url, Args&&... args)
+inline bool readUrlSegments(boost::urls::url_view url, Args&&... args)
{
return details::readUrlSegments(url, {std::forward<Args>(args)...});
}
-inline boost::urls::url replaceUrlSegment(const boost::urls::url_view& urlView,
+inline boost::urls::url replaceUrlSegment(boost::urls::url_view urlView,
const uint replaceLoc,
std::string_view newSegment)
{
- const boost::urls::segments_view& urlSegments = urlView.segments();
+ boost::urls::segments_view urlSegments = urlView.segments();
boost::urls::url url("/");
if (!urlSegments.is_absolute())
@@ -722,7 +722,7 @@
return url;
}
-inline std::string setProtocolDefaults(const boost::urls::url_view& urlView)
+inline std::string setProtocolDefaults(boost::urls::url_view urlView)
{
if (urlView.scheme() == "https")
{
@@ -739,7 +739,7 @@
return "";
}
-inline uint16_t setPortDefaults(const boost::urls::url_view& url)
+inline uint16_t setPortDefaults(boost::urls::url_view url)
{
uint16_t port = url.port_number();
if (port != 0)
@@ -821,7 +821,7 @@
struct adl_serializer<boost::urls::url_view>
{
// NOLINTNEXTLINE(readability-identifier-naming)
- static void to_json(json& j, const boost::urls::url_view& url)
+ static void to_json(json& j, boost::urls::url_view url)
{
j = url.buffer();
}
diff --git a/redfish-core/include/error_messages.hpp b/redfish-core/include/error_messages.hpp
index 08e8a3b..e45ea45 100644
--- a/redfish-core/include/error_messages.hpp
+++ b/redfish-core/include/error_messages.hpp
@@ -71,10 +71,9 @@
* @param[in] arg1 Parameter of message that will replace %1 in its body.
*
* @returns Message ResourceMissingAtURI formatted to JSON */
-nlohmann::json resourceMissingAtURI(const boost::urls::url_view& arg1);
+nlohmann::json resourceMissingAtURI(boost::urls::url_view arg1);
-void resourceMissingAtURI(crow::Response& res,
- const boost::urls::url_view& arg1);
+void resourceMissingAtURI(crow::Response& res, boost::urls::url_view arg1);
/**
* @brief Formats ActionParameterValueFormatError message into JSON
@@ -144,11 +143,10 @@
* @param[in] arg2 Parameter of message that will replace %2 in its body.
*
* @returns Message ResourceAtUriUnauthorized formatted to JSON */
-nlohmann::json resourceAtUriUnauthorized(const boost::urls::url_view& arg1,
+nlohmann::json resourceAtUriUnauthorized(boost::urls::url_view arg1,
std::string_view arg2);
-void resourceAtUriUnauthorized(crow::Response& res,
- const boost::urls::url_view& arg1,
+void resourceAtUriUnauthorized(crow::Response& res, boost::urls::url_view arg1,
std::string_view arg2);
/**
@@ -294,10 +292,10 @@
* @param[in] arg1 Parameter of message that will replace %1 in its body.
*
* @returns Message ResourceAtUriInUnknownFormat formatted to JSON */
-nlohmann::json resourceAtUriInUnknownFormat(const boost::urls::url_view& arg1);
+nlohmann::json resourceAtUriInUnknownFormat(boost::urls::url_view arg1);
void resourceAtUriInUnknownFormat(crow::Response& res,
- const boost::urls::url_view& arg1);
+ boost::urls::url_view arg1);
/**
* @brief Formats ServiceDisabled message into JSON
@@ -404,10 +402,9 @@
* @param[in] arg2 Parameter of message that will replace %2 in its body.
*
* @returns Message ResetRequired formatted to JSON */
-nlohmann::json resetRequired(const boost::urls::url_view& arg1,
- std::string_view arg2);
+nlohmann::json resetRequired(boost::urls::url_view arg1, std::string_view arg2);
-void resetRequired(crow::Response& res, const boost::urls::url_view& arg1,
+void resetRequired(crow::Response& res, boost::urls::url_view arg1,
std::string_view arg2);
/**
@@ -462,11 +459,11 @@
* @returns Message PropertyValueResourceConflict to JSON */
nlohmann::json propertyValueResourceConflict(std::string_view arg1,
std::string_view arg2,
- const boost::urls::url_view& arg3);
+ boost::urls::url_view arg3);
void propertyValueResourceConflict(crow::Response& res, std::string_view arg1,
std::string_view arg2,
- const boost::urls::url_view& arg3);
+ boost::urls::url_view arg3);
/**
* @brief Formats PropertyValueExternalConflict message into JSON
@@ -508,10 +505,9 @@
* @param[in] arg1 Parameter of message that will replace %1 in its body.
*
* @returns Message ResourceCreationConflict formatted to JSON */
-nlohmann::json resourceCreationConflict(const boost::urls::url_view& arg1);
+nlohmann::json resourceCreationConflict(boost::urls::url_view arg1);
-void resourceCreationConflict(crow::Response& res,
- const boost::urls::url_view& arg1);
+void resourceCreationConflict(crow::Response& res, boost::urls::url_view arg1);
/**
* @brief Formats MaximumErrorsExceeded message into JSON
@@ -604,10 +600,10 @@
* @param[in] arg1 Parameter of message that will replace %1 in its body.
*
* @returns Message CouldNotEstablishConnection formatted to JSON */
-nlohmann::json couldNotEstablishConnection(const boost::urls::url_view& arg1);
+nlohmann::json couldNotEstablishConnection(boost::urls::url_view arg1);
void couldNotEstablishConnection(crow::Response& res,
- const boost::urls::url_view& arg1);
+ boost::urls::url_view arg1);
/**
* @brief Formats PropertyNotWritable message into JSON
@@ -686,11 +682,11 @@
* @param[in] arg2 Parameter of message that will replace %2 in its body.
*
* @returns Message SourceDoesNotSupportProtocol formatted to JSON */
-nlohmann::json sourceDoesNotSupportProtocol(const boost::urls::url_view& arg1,
+nlohmann::json sourceDoesNotSupportProtocol(boost::urls::url_view arg1,
std::string_view arg2);
void sourceDoesNotSupportProtocol(crow::Response& res,
- const boost::urls::url_view& arg1,
+ boost::urls::url_view arg1,
std::string_view arg2);
/**
@@ -722,9 +718,9 @@
* @param[in] arg1 Parameter of message that will replace %1 in its body.
*
* @returns Message AccessDenied formatted to JSON */
-nlohmann::json accessDenied(const boost::urls::url_view& arg1);
+nlohmann::json accessDenied(boost::urls::url_view arg1);
-void accessDenied(crow::Response& res, const boost::urls::url_view& arg1);
+void accessDenied(crow::Response& res, boost::urls::url_view arg1);
/**
* @brief Formats QueryNotSupported message into JSON
@@ -819,9 +815,9 @@
* @param[in] arg1 Parameter of message that will replace %1 in its body.
*
* @returns Message InvalidObject formatted to JSON */
-nlohmann::json invalidObject(const boost::urls::url_view& arg1);
+nlohmann::json invalidObject(boost::urls::url_view arg1);
-void invalidObject(crow::Response& res, const boost::urls::url_view& arg1);
+void invalidObject(crow::Response& res, boost::urls::url_view arg1);
/**
* @brief Formats ResourceInStandby message into JSON
@@ -1041,10 +1037,9 @@
*
* @returns Message PasswordChangeRequired formatted to JSON */
-nlohmann::json passwordChangeRequired(const boost::urls::url_view& arg1);
+nlohmann::json passwordChangeRequired(boost::urls::url_view arg1);
-void passwordChangeRequired(crow::Response& res,
- const boost::urls::url_view& arg1);
+void passwordChangeRequired(crow::Response& res, boost::urls::url_view arg1);
/**
* @brief Formats InvalidUpload message into JSON
diff --git a/redfish-core/lib/virtual_media.hpp b/redfish-core/lib/virtual_media.hpp
index 73a9855..88bdb21 100644
--- a/redfish-core/lib/virtual_media.hpp
+++ b/redfish-core/lib/virtual_media.hpp
@@ -362,7 +362,7 @@
*
*/
inline std::optional<TransferProtocol>
- getTransferProtocolFromUri(const boost::urls::url_view& imageUri)
+ getTransferProtocolFromUri(boost::urls::url_view imageUri)
{
std::string_view scheme = imageUri.scheme();
if (scheme == "smb")
diff --git a/redfish-core/src/error_messages.cpp b/redfish-core/src/error_messages.cpp
index 77531f0..b435829 100644
--- a/redfish-core/src/error_messages.cpp
+++ b/redfish-core/src/error_messages.cpp
@@ -204,14 +204,13 @@
* See header file for more information
* @endinternal
*/
-nlohmann::json resourceMissingAtURI(const boost::urls::url_view& arg1)
+nlohmann::json resourceMissingAtURI(boost::urls::url_view arg1)
{
std::array<std::string_view, 1> args{arg1.buffer()};
return getLog(redfish::registries::base::Index::resourceMissingAtURI, args);
}
-void resourceMissingAtURI(crow::Response& res,
- const boost::urls::url_view& arg1)
+void resourceMissingAtURI(crow::Response& res, boost::urls::url_view arg1)
{
res.result(boost::beast::http::status::bad_request);
addMessageToErrorJson(res.jsonValue, resourceMissingAtURI(arg1));
@@ -313,15 +312,14 @@
* See header file for more information
* @endinternal
*/
-nlohmann::json resourceAtUriUnauthorized(const boost::urls::url_view& arg1,
+nlohmann::json resourceAtUriUnauthorized(boost::urls::url_view arg1,
std::string_view arg2)
{
return getLog(redfish::registries::base::Index::resourceAtUriUnauthorized,
std::to_array<std::string_view>({arg1.buffer(), arg2}));
}
-void resourceAtUriUnauthorized(crow::Response& res,
- const boost::urls::url_view& arg1,
+void resourceAtUriUnauthorized(crow::Response& res, boost::urls::url_view arg1,
std::string_view arg2)
{
res.result(boost::beast::http::status::unauthorized);
@@ -544,7 +542,7 @@
* See header file for more information
* @endinternal
*/
-nlohmann::json resourceAtUriInUnknownFormat(const boost::urls::url_view& arg1)
+nlohmann::json resourceAtUriInUnknownFormat(boost::urls::url_view arg1)
{
return getLog(
redfish::registries::base::Index::resourceAtUriInUnknownFormat,
@@ -552,7 +550,7 @@
}
void resourceAtUriInUnknownFormat(crow::Response& res,
- const boost::urls::url_view& arg1)
+ boost::urls::url_view arg1)
{
res.result(boost::beast::http::status::bad_request);
addMessageToErrorJson(res.jsonValue, resourceAtUriInUnknownFormat(arg1));
@@ -719,14 +717,13 @@
* See header file for more information
* @endinternal
*/
-nlohmann::json resetRequired(const boost::urls::url_view& arg1,
- std::string_view arg2)
+nlohmann::json resetRequired(boost::urls::url_view arg1, std::string_view arg2)
{
return getLog(redfish::registries::base::Index::resetRequired,
std::to_array<std::string_view>({arg1.buffer(), arg2}));
}
-void resetRequired(crow::Response& res, const boost::urls::url_view& arg1,
+void resetRequired(crow::Response& res, boost::urls::url_view arg1,
std::string_view arg2)
{
res.result(boost::beast::http::status::bad_request);
@@ -802,7 +799,7 @@
*/
nlohmann::json propertyValueResourceConflict(std::string_view arg1,
std::string_view arg2,
- const boost::urls::url_view& arg3)
+ boost::urls::url_view arg3)
{
return getLog(
redfish::registries::base::Index::propertyValueResourceConflict,
@@ -811,7 +808,7 @@
void propertyValueResourceConflict(crow::Response& res, std::string_view arg1,
std::string_view arg2,
- const boost::urls::url_view& arg3)
+ boost::urls::url_view arg3)
{
res.result(boost::beast::http::status::conflict);
addMessageToErrorJson(res.jsonValue,
@@ -869,14 +866,13 @@
* See header file for more information
* @endinternal
*/
-nlohmann::json resourceCreationConflict(const boost::urls::url_view& arg1)
+nlohmann::json resourceCreationConflict(boost::urls::url_view arg1)
{
return getLog(redfish::registries::base::Index::resourceCreationConflict,
std::to_array<std::string_view>({arg1.buffer()}));
}
-void resourceCreationConflict(crow::Response& res,
- const boost::urls::url_view& arg1)
+void resourceCreationConflict(crow::Response& res, boost::urls::url_view arg1)
{
res.result(boost::beast::http::status::bad_request);
addMessageToErrorJson(res.jsonValue, resourceCreationConflict(arg1));
@@ -1021,14 +1017,14 @@
* See header file for more information
* @endinternal
*/
-nlohmann::json couldNotEstablishConnection(const boost::urls::url_view& arg1)
+nlohmann::json couldNotEstablishConnection(boost::urls::url_view arg1)
{
return getLog(redfish::registries::base::Index::couldNotEstablishConnection,
std::to_array<std::string_view>({arg1.buffer()}));
}
void couldNotEstablishConnection(crow::Response& res,
- const boost::urls::url_view& arg1)
+ boost::urls::url_view arg1)
{
res.result(boost::beast::http::status::not_found);
addMessageToErrorJson(res.jsonValue, couldNotEstablishConnection(arg1));
@@ -1145,7 +1141,7 @@
* See header file for more information
* @endinternal
*/
-nlohmann::json sourceDoesNotSupportProtocol(const boost::urls::url_view& arg1,
+nlohmann::json sourceDoesNotSupportProtocol(boost::urls::url_view arg1,
std::string_view arg2)
{
return getLog(
@@ -1154,7 +1150,7 @@
}
void sourceDoesNotSupportProtocol(crow::Response& res,
- const boost::urls::url_view& arg1,
+ boost::urls::url_view arg1,
std::string_view arg2)
{
res.result(boost::beast::http::status::bad_request);
@@ -1206,13 +1202,13 @@
* See header file for more information
* @endinternal
*/
-nlohmann::json accessDenied(const boost::urls::url_view& arg1)
+nlohmann::json accessDenied(boost::urls::url_view arg1)
{
return getLog(redfish::registries::base::Index::accessDenied,
std::to_array<std::string_view>({arg1.buffer()}));
}
-void accessDenied(crow::Response& res, const boost::urls::url_view& arg1)
+void accessDenied(crow::Response& res, boost::urls::url_view arg1)
{
res.result(boost::beast::http::status::forbidden);
addMessageToErrorJson(res.jsonValue, accessDenied(arg1));
@@ -1373,13 +1369,13 @@
* See header file for more information
* @endinternal
*/
-nlohmann::json invalidObject(const boost::urls::url_view& arg1)
+nlohmann::json invalidObject(boost::urls::url_view arg1)
{
return getLog(redfish::registries::base::Index::invalidObject,
std::to_array<std::string_view>({arg1.buffer()}));
}
-void invalidObject(crow::Response& res, const boost::urls::url_view& arg1)
+void invalidObject(crow::Response& res, boost::urls::url_view arg1)
{
res.result(boost::beast::http::status::bad_request);
addMessageToErrorJson(res.jsonValue, invalidObject(arg1));
@@ -1719,7 +1715,7 @@
queryParameterOutOfRange(arg1, arg2, arg3));
}
-nlohmann::json passwordChangeRequired(const boost::urls::url_view& arg1)
+nlohmann::json passwordChangeRequired(boost::urls::url_view arg1)
{
return getLog(redfish::registries::base::Index::passwordChangeRequired,
std::to_array<std::string_view>({arg1.buffer()}));
@@ -1732,8 +1728,7 @@
* See header file for more information
* @endinternal
*/
-void passwordChangeRequired(crow::Response& res,
- const boost::urls::url_view& arg1)
+void passwordChangeRequired(crow::Response& res, boost::urls::url_view arg1)
{
messages::addMessageToJsonRoot(res.jsonValue, passwordChangeRequired(arg1));
}