#include "components/download/network/download_http_utils.h"
#include "net/http/http_byte_range.h"
#include "net/http/http_request_headers.h"
#include "net/http/http_util.h"
namespace download {
std::optional<net::HttpByteRange> ParseRangeHeader(
const net::HttpRequestHeaders& request_headers) {
std::vector<net::HttpByteRange> byte_ranges;
std::optional<std::string> range_header =
request_headers.GetHeader(net::HttpRequestHeaders::kRange);
if (!range_header) {
return std::nullopt;
}
bool success =
net::HttpUtil::ParseRangeHeader(range_header.value(), &byte_ranges);
if (!success || byte_ranges.empty() || byte_ranges.size() > 1)
return std::nullopt;
return byte_ranges.front();
}
bool ValidateRequestHeaders(const net::HttpRequestHeaders& request_headers) {
if (request_headers.HasHeader(net::HttpRequestHeaders::kRange)) {
return ParseRangeHeader(request_headers).has_value();
}
return true;
}
}