mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-21 23:20:20 +00:00
LibWeb/Fetch: Implement build_content_range(start, end, full_length)
This commit is contained in:
parent
bf5cf720b5
commit
4e48298414
Notes:
github-actions[bot]
2024-11-21 00:59:13 +00:00
Author: https://github.com/rmg-x Commit: https://github.com/LadybirdBrowser/ladybird/commit/4e48298414e Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2434 Reviewed-by: https://github.com/tcl3 ✅
2 changed files with 14 additions and 0 deletions
|
@ -832,6 +832,19 @@ Variant<Vector<ByteBuffer>, ExtractHeaderParseFailure, Empty> extract_header_lis
|
||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://fetch.spec.whatwg.org/#build-a-content-range
|
||||||
|
ByteString build_content_range(u64 const& range_start, u64 const& range_end, u64 const& full_length)
|
||||||
|
{
|
||||||
|
// 1. Let contentRange be `bytes `.
|
||||||
|
// 2. Append rangeStart, serialized and isomorphic encoded, to contentRange.
|
||||||
|
// 3. Append 0x2D (-) to contentRange.
|
||||||
|
// 4. Append rangeEnd, serialized and isomorphic encoded to contentRange.
|
||||||
|
// 5. Append 0x2F (/) to contentRange.
|
||||||
|
// 6. Append fullLength, serialized and isomorphic encoded to contentRange.
|
||||||
|
// 7. Return contentRange.
|
||||||
|
return ByteString::formatted("bytes {}-{}/{}", String::number(range_start), String::number(range_end), String::number(full_length));
|
||||||
|
}
|
||||||
|
|
||||||
// https://fetch.spec.whatwg.org/#simple-range-header-value
|
// https://fetch.spec.whatwg.org/#simple-range-header-value
|
||||||
Optional<RangeHeaderValue> parse_single_range_header_value(ReadonlyBytes const value, bool const allow_whitespace)
|
Optional<RangeHeaderValue> parse_single_range_header_value(ReadonlyBytes const value, bool const allow_whitespace)
|
||||||
{
|
{
|
||||||
|
|
|
@ -93,6 +93,7 @@ struct ExtractHeaderParseFailure {
|
||||||
[[nodiscard]] bool is_request_body_header_name(ReadonlyBytes);
|
[[nodiscard]] bool is_request_body_header_name(ReadonlyBytes);
|
||||||
[[nodiscard]] Optional<Vector<ByteBuffer>> extract_header_values(Header const&);
|
[[nodiscard]] Optional<Vector<ByteBuffer>> extract_header_values(Header const&);
|
||||||
[[nodiscard]] Variant<Vector<ByteBuffer>, ExtractHeaderParseFailure, Empty> extract_header_list_values(ReadonlyBytes, HeaderList const&);
|
[[nodiscard]] Variant<Vector<ByteBuffer>, ExtractHeaderParseFailure, Empty> extract_header_list_values(ReadonlyBytes, HeaderList const&);
|
||||||
|
[[nodiscard]] ByteString build_content_range(u64 const& range_start, u64 const& range_end, u64 const& full_length);
|
||||||
[[nodiscard]] Optional<RangeHeaderValue> parse_single_range_header_value(ReadonlyBytes, bool);
|
[[nodiscard]] Optional<RangeHeaderValue> parse_single_range_header_value(ReadonlyBytes, bool);
|
||||||
[[nodiscard]] ByteBuffer default_user_agent_value();
|
[[nodiscard]] ByteBuffer default_user_agent_value();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue