Skip to main content

parse_range_header

Function parse_range_header 

Source
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 bytes
  • bytes=500-999 - Bytes 500-999
  • bytes=500- - From byte 500 to end
  • bytes=-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);