1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 5 #include <boost/beast/http/verb.hpp> 6 7 #include <cstddef> 8 #include <optional> 9 // boost/beast/http/verb for whatever reason requires this? 10 // NOLINTNEXTLINE(misc-include-cleaner) 11 #include <ostream> 12 #include <string_view> 13 14 enum class HttpVerb 15 { 16 Delete = 0, 17 Get, 18 Head, 19 Options, 20 Patch, 21 Post, 22 Put, 23 Max, 24 }; 25 26 static constexpr size_t maxVerbIndex = static_cast<size_t>(HttpVerb::Max) - 1U; 27 httpVerbFromBoost(boost::beast::http::verb bv)28inline std::optional<HttpVerb> httpVerbFromBoost(boost::beast::http::verb bv) 29 { 30 switch (bv) 31 { 32 case boost::beast::http::verb::delete_: 33 return HttpVerb::Delete; 34 case boost::beast::http::verb::get: 35 return HttpVerb::Get; 36 case boost::beast::http::verb::head: 37 return HttpVerb::Head; 38 case boost::beast::http::verb::options: 39 return HttpVerb::Options; 40 case boost::beast::http::verb::patch: 41 return HttpVerb::Patch; 42 case boost::beast::http::verb::post: 43 return HttpVerb::Post; 44 case boost::beast::http::verb::put: 45 return HttpVerb::Put; 46 default: 47 return std::nullopt; 48 } 49 } 50 httpVerbToString(HttpVerb verb)51inline std::string_view httpVerbToString(HttpVerb verb) 52 { 53 switch (verb) 54 { 55 case HttpVerb::Delete: 56 return "DELETE"; 57 case HttpVerb::Get: 58 return "GET"; 59 case HttpVerb::Head: 60 return "HEAD"; 61 case HttpVerb::Patch: 62 return "PATCH"; 63 case HttpVerb::Post: 64 return "POST"; 65 case HttpVerb::Put: 66 return "PUT"; 67 case HttpVerb::Options: 68 return "OPTIONS"; 69 default: 70 return ""; 71 } 72 73 // Should never reach here 74 return ""; 75 } 76