pub fn parse_range_header(
header: &str,
resource_size: u64,
) -> Result<ByteRange, RangeError>Expand description
Parse a Range header value and resolve it against a resource size.
Supports the following formats:
bytes=0-499- First 500 bytesbytes=500-999- Bytes 500-999bytes=500-- From byte 500 to endbytes=-500- Last 500 bytes
§Errors
Returns an error if:
- The syntax is invalid
- The unit is not “bytes”
- Multiple ranges are specified (not yet supported)
- The range is not satisfiable for the given resource size
§Examples
use fastapi_http::range::parse_range_header;
// First 500 bytes of a 1000-byte resource
let range = parse_range_header("bytes=0-499", 1000).unwrap();
assert_eq!(range.start, 0);
assert_eq!(range.end, 499);
assert_eq!(range.len(), 500);
// Last 100 bytes
let range = parse_range_header("bytes=-100", 1000).unwrap();
assert_eq!(range.start, 900);
assert_eq!(range.end, 999);
// From byte 500 to end
let range = parse_range_header("bytes=500-", 1000).unwrap();
assert_eq!(range.start, 500);
assert_eq!(range.end, 999);