http-range
Node.js parser for Content-Range and Range HTTP header fields according to the HTTP/1.1 specifications.
Installation
$ npm install http-range
Usage
var ContentRange = ContentRange;var Range = Range; // Parsing and creating 'Content-Range' headerContentRangeprototype; // Content-Range: bytes 0-49/50'bytes' '0-49' 50; // => bytes 0-49/50 // Parsing and creating 'Range' headerRangeprototype; // Range: bytes=0-49'bytes' '0-49'; // => bytes=0-49
For more usages check the test files.
API
ContentRange
Class
new ContentRange(unit, range, length)
unit
{String} Usually 'bytes', but can be any tokenrange
{RangeSpec|String} A RangeSpec instance, a string like '0-49' or '*' if unknownlength
{Number|'*'} The total length of the full entity-body or '*' if this length is unknown or difficult to determine
Throws error if arguments are invalid.
Properties
unit
{String}range
{RangeSpec}length
{Number|null} Null if unknown
Methods
toString()
Return a valid string valueparse(input)
Parse an input string. Throws error if invalid
Allowed Content-Range(s)
Content-Range: bytes 0-49/50
Content-Range: bytes 0-49/*
Content-Range: bytes */50
Content-Range: bytes */*
Range
Class
new Range(unit, ranges)
unit
{String} Usually 'bytes', but can be any tokenranges
{RangeSpec[]|String} An array of RangeSpec instances or a string like '0-49[,50-99][...]'
Throws error if arguments are invalid.
Properties
unit
{String}ranges
{RangeSpec[]}
Methods
toString()
Return a valid string valueparse(input)
Parse an input string. Throws error if invalid
Allowed Range(s)
Range: bytes=0-49
Range: bytes=0-49,50-99,-30
Range: bytes=1-
Range: bytes=-50
RangeSpec
Class
new RangeSpec(low, high, size)
low
{Number|undefined}high
{Number|undefined}size
{Number|undefined} For validation only, optional
Throws error if arguments are invalid.
Properties
low
{Number|undefined}high
{Number|undefined}
Methods
toString()
Return a valid string valueparse(input)
Parse an input string. Throws error if invalid
Examples of valid ranges
*
0-49
-49
34-
Tests
$ make test