| #ifndef THIRD_PARTY_GBMCWEB_DEVPATH_PLUGIN_REDFISH_DEVPATH_INJECTOR_H_ |
| #define THIRD_PARTY_GBMCWEB_DEVPATH_PLUGIN_REDFISH_DEVPATH_INJECTOR_H_ |
| |
| #include <memory> |
| #include <string_view> |
| |
| #include "absl/status/statusor.h" |
| #include "redfish_devpath_injector_interface.hpp" |
| #include "redfish_to_uhm_trie.hpp" |
| #include "http_request.hpp" |
| #include "http_response.hpp" |
| |
| namespace devpath_plugin { |
| |
| // RedfishDevpathInjector parses a mapping configuration file matching Redfish |
| // URL patterns to UHM (Unified Hardware Model) monitored component keys and |
| // their corresponding expose configuration (e.g., whether to expose OEM Google |
| // Devpaths, placeholder settings, and location contexts). |
| class RedfishDevpathInjector : public RedfishDevpathInjectorInterface { |
| public: |
| // Creates and initializes a `RedfishDevpathInjector` by reading and parsing |
| // the textproto configuration file at `mapping_config_path`. |
| // |
| // Returns: |
| // - A new `RedfishDevpathInjector` instance (wrapped in `std::unique_ptr`) |
| // if the configuration is successfully read and parsed. |
| // - `absl::NotFoundError` if the file cannot be opened. |
| // - `absl::InvalidArgumentError` if the configuration cannot be parsed. |
| static absl::StatusOr<std::unique_ptr<RedfishDevpathInjector>> Create( |
| std::string_view mapping_config_path); |
| |
| void Inject(const crow::Request& req, crow::Response& res) const override; |
| |
| private: |
| RedfishDevpathInjector() = default; |
| RedfishToUhmTrie trie_; |
| }; |
| |
| } // namespace devpath_plugin |
| |
| #endif // THIRD_PARTY_GBMCWEB_DEVPATH_PLUGIN_REDFISH_DEVPATH_INJECTOR_H_ |