xref: /openbmc/bmcweb/redfish-core/include/registries.hpp (revision c5ba4c27ddb28c7844c0ea3078df4114f531dd25)
170304cb5SJason M. Bills /*
270304cb5SJason M. Bills // Copyright (c) 2019 Intel Corporation
370304cb5SJason M. Bills //
470304cb5SJason M. Bills // Licensed under the Apache License, Version 2.0 (the "License");
570304cb5SJason M. Bills // you may not use this file except in compliance with the License.
670304cb5SJason M. Bills // You may obtain a copy of the License at
770304cb5SJason M. Bills //
870304cb5SJason M. Bills //      http://www.apache.org/licenses/LICENSE-2.0
970304cb5SJason M. Bills //
1070304cb5SJason M. Bills // Unless required by applicable law or agreed to in writing, software
1170304cb5SJason M. Bills // distributed under the License is distributed on an "AS IS" BASIS,
1270304cb5SJason M. Bills // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1370304cb5SJason M. Bills // See the License for the specific language governing permissions and
1470304cb5SJason M. Bills // limitations under the License.
1570304cb5SJason M. Bills */
1670304cb5SJason M. Bills #pragma once
17*c5ba4c27SEd Tanous 
18*c5ba4c27SEd Tanous #include <span>
19*c5ba4c27SEd Tanous #include <string>
20*c5ba4c27SEd Tanous #include <string_view>
21*c5ba4c27SEd Tanous 
2270304cb5SJason M. Bills namespace redfish::message_registries
2370304cb5SJason M. Bills {
24351d3063SJason M. Bills struct Header
25351d3063SJason M. Bills {
26351d3063SJason M. Bills     const char* copyright;
27351d3063SJason M. Bills     const char* type;
28351d3063SJason M. Bills     const char* id;
29351d3063SJason M. Bills     const char* name;
30351d3063SJason M. Bills     const char* language;
31351d3063SJason M. Bills     const char* description;
32351d3063SJason M. Bills     const char* registryPrefix;
33351d3063SJason M. Bills     const char* registryVersion;
34351d3063SJason M. Bills     const char* owningEntity;
35351d3063SJason M. Bills };
3670304cb5SJason M. Bills 
3770304cb5SJason M. Bills struct Message
3870304cb5SJason M. Bills {
3970304cb5SJason M. Bills     const char* description;
4070304cb5SJason M. Bills     const char* message;
4170304cb5SJason M. Bills     const char* severity;
42e7808c93SGunnar Mills     const char* messageSeverity;
43271584abSEd Tanous     const size_t numberOfArgs;
4470304cb5SJason M. Bills     std::array<const char*, 5> paramTypes;
4570304cb5SJason M. Bills     const char* resolution;
4670304cb5SJason M. Bills };
4770304cb5SJason M. Bills using MessageEntry = std::pair<const char*, const Message>;
48*c5ba4c27SEd Tanous 
49*c5ba4c27SEd Tanous inline void fillMessageArgs(const std::span<const std::string_view> messageArgs,
50*c5ba4c27SEd Tanous                             std::string& msg)
51*c5ba4c27SEd Tanous {
52*c5ba4c27SEd Tanous     int i = 0;
53*c5ba4c27SEd Tanous     for (const std::string_view& messageArg : messageArgs)
54*c5ba4c27SEd Tanous     {
55*c5ba4c27SEd Tanous         std::string argStr = "%" + std::to_string(i + 1);
56*c5ba4c27SEd Tanous         size_t argPos = msg.find(argStr);
57*c5ba4c27SEd Tanous         if (argPos != std::string::npos)
58*c5ba4c27SEd Tanous         {
59*c5ba4c27SEd Tanous             msg.replace(argPos, argStr.length(), messageArg);
60*c5ba4c27SEd Tanous         }
61*c5ba4c27SEd Tanous         i++;
62*c5ba4c27SEd Tanous     }
63*c5ba4c27SEd Tanous }
64*c5ba4c27SEd Tanous 
6570304cb5SJason M. Bills } // namespace redfish::message_registries
66