private static HttpRange parse()

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);
        }
    }