#include "services/network/public/cpp/content_language_parser.h"
#include <optional>
#include <utility>
#include <vector>
#include "base/strings/string_util.h"
#include "net/http/structured_headers.h"
namespace network {
std::optional<std::vector<std::string>> ParseContentLanguages(
const std::string& header) {
std::optional<net::structured_headers::List> maybe_list =
net::structured_headers::ParseList(base::ToLowerASCII(header));
if (!maybe_list.has_value())
return std::nullopt;
for (const auto& list_item : maybe_list.value()) {
if (list_item.member.size() != 1u)
return std::nullopt;
if (!list_item.member[0].item.is_token())
return std::nullopt;
}
std::vector<std::string> result;
for (const auto& list_item : maybe_list.value()) {
const std::string& token_value = list_item.member[0].item.GetString();
result.push_back(token_value);
}
return std::make_optional(std::move(result));
}
}