in alibabacloud_oss_v2/utils.py [0:0]
def parse_http_range(range_header: str) -> Tuple[int, int]:
"""
Parses the range header
It only accepts single ranges.
"""
if not range_header:
raise ValueError("Invalid range header, it is none or empty.")
if not range_header.startswith("bytes="):
raise ValueError("Invalid range header, doesn't start with bytes=.")
if range_header.count(',') > 0:
raise ValueError("Invalid range header, contains multiple ranges which isn't supported.")
dash = range_header.find('-')
if dash < 0:
raise ValueError("Invalid range header, contains no '-'")
start_str = range_header[6:dash].strip()
end_str = range_header[dash+1:].strip()
start = -1
if len(start_str) > 0:
start = int(start_str)
if start < 0:
raise ValueError(f'Invalid range header: {start_str} in {range_header}')
end = -1
if len(end_str) > 0:
end = int(end_str)
if end < 0:
raise ValueError(f'Invalid range header: {end_str} in {range_header}')
return start, end