// Copyright (c) 2011 The Chromium Embedded Framework Authors. All rights // reserved. Use of this source code is governed by a BSD-style license that // can be found in the LICENSE file. #include "libcef/common/net/http_header_utils.h" #include #include "base/strings/string_util.h" #include "net/http/http_response_headers.h" #include "net/http/http_util.h" using net::HttpResponseHeaders; namespace HttpHeaderUtils { std::string GenerateHeaders(const HeaderMap& map) { std::string headers; for (HeaderMap::const_iterator header = map.begin(); header != map.end(); ++header) { const CefString& key = header->first; const CefString& value = header->second; if (!key.empty()) { // Delimit with "\r\n". if (!headers.empty()) { headers += "\r\n"; } headers += std::string(key) + ": " + std::string(value); } } return headers; } void ParseHeaders(const std::string& header_str, HeaderMap& map) { // Parse the request header values for (net::HttpUtil::HeadersIterator i(header_str.begin(), header_str.end(), "\n\r"); i.GetNext();) { map.insert(std::make_pair(i.name(), i.values())); } } void MakeASCIILower(std::string* str) { std::transform(str->begin(), str->end(), str->begin(), ::tolower); } HeaderMap::iterator FindHeaderInMap(const std::string& nameLower, HeaderMap& map) { for (auto it = map.begin(); it != map.end(); ++it) { if (base::EqualsCaseInsensitiveASCII(it->first.ToString(), nameLower)) { return it; } } return map.end(); } } // namespace HttpHeaderUtils