Package org.springframework.http

# Class HttpRange

java.lang.Object
org.springframework.http.HttpRange

public abstract class HttpRange extends Object
Represents an HTTP (byte) range for use with the HTTP `"Range"` header.

Since:
  4.2
Author:
  Arjen Poutsma, Juergen Hoeller
See Also:
  - HTTP/1.1: Range Requests
  - `HttpHeaders.setRange(List)`
  - `HttpHeaders.getRange()`

## Constructor Summary

Constructors
Constructor
Description
`HttpRange()`

## Method Summary

Modifier and Type
Method
Description
`static HttpRange`
`createByteRange(long firstBytePos)`
Create an `HttpRange` from the given position to the end.
`static HttpRange`
`createByteRange(long firstBytePos, long lastBytePos)`
Create a `HttpRange` from the given fist to last position.
`static HttpRange`
`createSuffixRange(long suffixLength)`
Create an `HttpRange` that ranges over the last given number of bytes.
`abstract long`
`getRangeEnd(long length)`
Return the end of the range (inclusive) given the total length of a representation.
`abstract long`
`getRangeStart(long length)`
Return the start of the range given the total length of a representation.
`static List<HttpRange>`
`parseRanges(String ranges)`
Parse the given, comma-separated string into a list of `HttpRange` objects.
`org.springframework.core.io.support.ResourceRegion`
`toResourceRegion(org.springframework.core.io.Resource resource)`
Turn a `Resource` into a `ResourceRegion` using the range information contained in the current `HttpRange`.
`static List<org.springframework.core.io.support.ResourceRegion>`
`toResourceRegions(List<HttpRange> ranges, org.springframework.core.io.Resource resource)`
Convert each `HttpRange` into a `ResourceRegion`, selecting the appropriate segment of the given `Resource` using HTTP Range information.
`static String`
`toString(Collection<HttpRange> ranges)`
Return a string representation of the given list of `HttpRange` objects.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### HttpRange

public HttpRange()

## Method Details

### toResourceRegion

public org.springframework.core.io.support.ResourceRegion toResourceRegion(org.springframework.core.io.Resource resource)
Turn a `Resource` into a `ResourceRegion` using the range information contained in the current `HttpRange`.

Parameters:
  `resource` - the `Resource` to select the region from
Returns:
  the selected region of the given `Resource`
Since:
  4.3

### getRangeStart

public abstract long getRangeStart(long length)
Return the start of the range given the total length of a representation.

Parameters:
  `length` - the length of the representation
Returns:
  the start of this range for the representation

### getRangeEnd

public abstract long getRangeEnd(long length)
Return the end of the range (inclusive) given the total length of a representation.

Parameters:
  `length` - the length of the representation
Returns:
  the end of the range for the representation

### createByteRange

public static HttpRange createByteRange(long firstBytePos)
Create an `HttpRange` from the given position to the end.

Parameters:
  `firstBytePos` - the first byte position
Returns:
  a byte range that ranges from `firstPos` till the end
See Also:
  - Byte Ranges

### createByteRange

public static HttpRange createByteRange(long firstBytePos, long lastBytePos)
Create a `HttpRange` from the given fist to last position.

Parameters:
  `firstBytePos` - the first byte position
  `lastBytePos` - the last byte position
Returns:
  a byte range that ranges from `firstPos` till `lastPos`
See Also:
  - Byte Ranges

### createSuffixRange

public static HttpRange createSuffixRange(long suffixLength)
Create an `HttpRange` that ranges over the last given number of bytes.

Parameters:
  `suffixLength` - the number of bytes for the range
Returns:
  a byte range that ranges over the last `suffixLength` number of bytes
See Also:
  - Byte Ranges

### parseRanges

public static List<HttpRange> parseRanges(@Nullable String ranges)
Parse the given, comma-separated string into a list of `HttpRange` objects.

This method can be used to parse an `Range` header.

Parameters:
  `ranges` - the string to parse
Returns:
  the list of ranges
Throws:
  `IllegalArgumentException` - if the string cannot be parsed or if the number of ranges is greater than 100

### toResourceRegions

public static List<org.springframework.core.io.support.ResourceRegion> toResourceRegions(List<HttpRange> ranges, org.springframework.core.io.Resource resource)
Convert each `HttpRange` into a `ResourceRegion`, selecting the appropriate segment of the given `Resource` using HTTP Range information.

Parameters:
  `ranges` - the list of ranges
  `resource` - the resource to select the regions from
Returns:
  the list of regions for the given resource
Throws:
  `IllegalArgumentException` - if the sum of all ranges exceeds the resource length
Since:
  4.3

### toString

public static String toString(Collection<HttpRange> ranges)
Return a string representation of the given list of `HttpRange` objects.

This method can be used to for an `Range` header.

Parameters:
  `ranges` - the ranges to create a string of
Returns:
  the string representation