xref: /openbmc/bmcweb/redfish-core/lib/aggregation_service.hpp (revision a7405d5fe77fa9e324c22cb29ea08029fc023f4e)
1 #pragma once
2 
3 #include "app.hpp"
4 #include "error_messages.hpp"
5 #include "http_request.hpp"
6 #include "http_response.hpp"
7 #include "query.hpp"
8 #include "registries/privilege_registry.hpp"
9 
10 #include <nlohmann/json.hpp>
11 
12 #include <functional>
13 #include <memory>
14 
15 namespace redfish
16 {
17 
18 inline void handleAggregationServiceHead(
19     App& app, const crow::Request& req,
20     const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
21 {
22     if (!redfish::setUpRedfishRoute(app, req, asyncResp))
23     {
24         return;
25     }
26     asyncResp->res.addHeader(
27         boost::beast::http::field::link,
28         "</redfish/v1/JsonSchemas/AggregationService/AggregationService.json>; rel=describedby");
29 }
30 
31 inline void handleAggregationServiceGet(
32     App& app, const crow::Request& req,
33     const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
34 {
35     if (!redfish::setUpRedfishRoute(app, req, asyncResp))
36     {
37         return;
38     }
39     asyncResp->res.addHeader(
40         boost::beast::http::field::link,
41         "</redfish/v1/JsonSchemas/AggregationService/AggregationService.json>; rel=describedby");
42     nlohmann::json& json = asyncResp->res.jsonValue;
43     json["@odata.id"] = "/redfish/v1/AggregationService";
44     json["@odata.type"] = "#AggregationService.v1_0_1.AggregationService";
45     json["Id"] = "AggregationService";
46     json["Name"] = "Aggregation Service";
47     json["Description"] = "Aggregation Service";
48     json["ServiceEnabled"] = true;
49 }
50 
51 inline void requestAggregationServiceRoutes(App& app)
52 {
53     BMCWEB_ROUTE(app, "/redfish/v1/AggregationService/")
54         .privileges(redfish::privileges::headAggregationService)
55         .methods(boost::beast::http::verb::head)(
56             std::bind_front(handleAggregationServiceHead, std::ref(app)));
57     BMCWEB_ROUTE(app, "/redfish/v1/AggregationService/")
58         .privileges(redfish::privileges::getAggregationService)
59         .methods(boost::beast::http::verb::get)(
60             std::bind_front(handleAggregationServiceGet, std::ref(app)));
61 }
62 
63 } // namespace redfish
64