1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 5 #include "async_resp.hpp" 6 #include "http_response.hpp" 7 #include "json_utils.hpp" 8 9 #include <nlohmann/json.hpp> 10 11 #include <functional> 12 #include <memory> 13 #include <utility> 14 15 namespace redfish 16 { 17 18 namespace etag_utils 19 { 20 21 namespace details 22 { 23 etagOmitDateTimeHandler(const std::function<void (crow::Response &)> & oldCompleteRequestHandler,crow::Response & res)24inline void etagOmitDateTimeHandler( 25 const std::function<void(crow::Response&)>& oldCompleteRequestHandler, 26 crow::Response& res) 27 { 28 size_t hash = json_util::hashJsonWithoutKey(res.jsonValue, "DateTime"); 29 res.setCurrentOverrideEtag("\"" + intToHexString(hash, 8) + "\""); 30 oldCompleteRequestHandler(res); 31 } 32 33 } // namespace details 34 setEtagOmitDateTimeHandler(const std::shared_ptr<bmcweb::AsyncResp> & asyncResp)35inline void setEtagOmitDateTimeHandler( 36 const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) 37 { 38 std::function<void(crow::Response&)> oldCompleteRequestHandler = 39 asyncResp->res.releaseCompleteRequestHandler(); 40 asyncResp->res.setCompleteRequestHandler( 41 std::bind_front(details::etagOmitDateTimeHandler, 42 std::move(oldCompleteRequestHandler))); 43 } 44 45 } // namespace etag_utils 46 47 } // namespace redfish 48