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