in alibabacloud_oss_v2/utils.py [0:0]
def parse_content_range(content_range: str) -> Tuple[int, int, int]:
"""
Parses the content range header
accepts bytes 22-33/42 and bytes 22-33/* format
"""
if not content_range:
raise ValueError("Invalid content-range header, it is none or empty.")
if not content_range.startswith('bytes '):
raise ValueError("Invalid content-range header, it dose not start with bytes.")
vals = content_range.split(" ")[1].split("/")
if len(vals) != 2:
raise ValueError(f'Invalid content-range header: {content_range}')
rvals = vals[0].split("-")
if len(rvals) != 2:
raise ValueError(f'Invalid content-range header: {content_range}')
start = int(rvals[0])
if start < 0:
raise ValueError(f'Invalid content-range header: {start}')
end = int(rvals[1])
if end < 0:
raise ValueError(f'Invalid content-range header: {end}')
if vals[1] == "*":
size = -1
else:
size = int(vals[1])
if size <= 0:
raise ValueError(f'Invalid content-range header: {size}')
return start, end, size