in common/src/main/java/org/apache/cassandra/sidecar/common/utils/HttpRange.java [82:110]
private static HttpRange parse(@NotNull String rangeHeader, final long fileSize)
{
Matcher m = RANGE_HEADER.matcher(rangeHeader);
if (!m.matches())
{
throw invalidRangeHeaderException(rangeHeader);
}
long left = parseLong(m.group(1), rangeHeader);
long right = parseLong(m.group(2), rangeHeader);
if (left == BOUND_ABSENT && right == BOUND_ABSENT) // matching "bytes=-"
{
throw invalidRangeHeaderException(rangeHeader);
}
else if (left == BOUND_ABSENT) // matching "bytes=-1"
{
long len = Math.min(right, fileSize); // correct the range if it exceeds file size.
return new HttpRange(fileSize - len, fileSize - 1);
}
else if (right == BOUND_ABSENT) // matching "bytes=1-"
{
return new HttpRange(left, fileSize - 1);
}
else
{
return new HttpRange(left, right);
}
}