Header • Range • Parser
Range header field parser. Fork of a̶b̶a̶n̶d̶o̶n̶e̶d̶ range-parser. If you write to me with a request to change or update something, I will do it. Honestly 👼.
Installation
npm install header-range-parser
API
const {
ERROR_INVALID_ARGUMENT,
ERROR_STRING_IS_NOT_HEADER,
ERROR_UNSATISFIABLE_RESULT,
parseRange,
} = require("header-range-parser");
import {
ERROR_INVALID_ARGUMENT,
ERROR_STRING_IS_NOT_HEADER,
ERROR_UNSATISFIABLE_RESULT,
ResultInvalid,
ResultUnsatisfiable,
ResultWrongArgument,
parseRange,
} from "header-range-parser";
parseRange(size, header, options)
import {
Result, Ranges, parseRange, Options,
} from "header-range-parser";
declare function parseRange(
size: number, header: string, options?: Options,
): Ranges | Result;
Parameter | Type | Description |
---|
size | number | Required. Size in bytes. |
header | string | Required. String containing header. |
options | object | Optional options: combine (bool), throwError (bool). |
Parse the given header
string where size
is the size of the selected
representation that is to be partitioned into sub-ranges. An array of sub-ranges
will be returned or negative numbers indicating an error parsing.
-
-1
or ERROR_UNSATISFIABLE_RESULT
or esultUnsatisfiable
signals an unsatisfiable range
-
-2
or ERROR_STRING_IS_NOT_HEADER
or ResultInvalid
signals a malformed header string
-
-3
or ERROR_INVALID_ARGUMENT
or ResultWrongArgument
invalid parameters
// parse header from request
const subRanges = parseRange(
size,
request.headers.range,
);
// the type of the subranges
if (subRanges.type === "bytes") {
// the ranges
subRanges.forEach((range) => {
// do something
// with range.start
// and range.end
});
}
Options
These properties are accepted in the options object.
combine
Specifies if overlapping and adjacent sub-ranges should be combined, defaults to false
.
When true
, ranges will be combined and returned as if they were specified that way in the header.
throwError
Throw or suppress errors. Defaults to true
.
parseRange(
100,
"bytes=50-55,0-10,5-10,56-60",
{
combine: true,
throwError: false,
});
// [
// { start: 0, end: 10 },
// { start: 50, end: 60 }
// ]
See also
💾 My other projects