78 std::remove_if(s.begin(), s.end(), [](
char c) { return c ==
' '; }),
86 std::vector<AcceptHeaderField> fields;
88 const auto elements = ccf::nonstd::split(s,
",");
89 for (
const auto& element : elements)
91 const auto [types, q_string] = ccf::nonstd::split_1(element,
";q=");
92 const auto [type, subtype] = ccf::nonstd::split_1(types,
"/");
93 if (type.empty() || subtype.empty())
96 HTTP_STATUS_BAD_REQUEST,
97 ccf::errors::InvalidHeaderValue,
99 "Entry in Accept header is not a valid MIME type: {}", element));
102 float q_factor = 1.0f;
103 if (!q_string.empty())
107 q_factor = std::stof(std::string(q_string));
109 catch (
const std::exception& e)
112 HTTP_STATUS_BAD_REQUEST,
113 ccf::errors::InvalidHeaderValue,
115 "Could not parse q-factor from MIME type in Accept header: "
127 std::sort(fields.begin(), fields.end(), [](
const auto& a,
const auto& b) {