// SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright OpenBMC Authors #pragma once #include <boost/beast/http/verb.hpp> #include <cstddef> #include <optional> // boost/beast/http/verb for whatever reason requires this? // NOLINTNEXTLINE(misc-include-cleaner) #include <ostream> #include <string_view> enum class HttpVerb { Delete = 0, Get, Head, Options, Patch, Post, Put, Max, }; static constexpr size_t maxVerbIndex = static_cast<size_t>(HttpVerb::Max) - 1U; inline std::optional<HttpVerb> httpVerbFromBoost(boost::beast::http::verb bv) { switch (bv) { case boost::beast::http::verb::delete_: return HttpVerb::Delete; case boost::beast::http::verb::get: return HttpVerb::Get; case boost::beast::http::verb::head: return HttpVerb::Head; case boost::beast::http::verb::options: return HttpVerb::Options; case boost::beast::http::verb::patch: return HttpVerb::Patch; case boost::beast::http::verb::post: return HttpVerb::Post; case boost::beast::http::verb::put: return HttpVerb::Put; default: return std::nullopt; } } inline std::string_view httpVerbToString(HttpVerb verb) { switch (verb) { case HttpVerb::Delete: return "DELETE"; case HttpVerb::Get: return "GET"; case HttpVerb::Head: return "HEAD"; case HttpVerb::Patch: return "PATCH"; case HttpVerb::Post: return "POST"; case HttpVerb::Put: return "PUT"; case HttpVerb::Options: return "OPTIONS"; default: return ""; } // Should never reach here return ""; }