You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					85 lines
				
				2.2 KiB
			
		
		
			
		
	
	
					85 lines
				
				2.2 KiB
			| 
											3 years ago
										 | # range-parser
 | ||
|  | 
 | ||
|  | [![NPM Version][npm-version-image]][npm-url] | ||
|  | [![NPM Downloads][npm-downloads-image]][npm-url] | ||
|  | [![Node.js Version][node-image]][node-url] | ||
|  | [![Build Status][travis-image]][travis-url] | ||
|  | [![Test Coverage][coveralls-image]][coveralls-url] | ||
|  | 
 | ||
|  | Range header field parser. | ||
|  | 
 | ||
|  | ## Installation
 | ||
|  | 
 | ||
|  | This is a [Node.js](https://nodejs.org/en/) module available through the | ||
|  | [npm registry](https://www.npmjs.com/). Installation is done using the | ||
|  | [`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): | ||
|  | 
 | ||
|  | ```sh | ||
|  | $ npm install range-parser | ||
|  | ``` | ||
|  | 
 | ||
|  | ## API
 | ||
|  | 
 | ||
|  | <!-- eslint-disable no-unused-vars --> | ||
|  | 
 | ||
|  | ```js | ||
|  | var parseRange = require('range-parser') | ||
|  | ``` | ||
|  | 
 | ||
|  | ### parseRange(size, header, options)
 | ||
|  | 
 | ||
|  | Parse the given `header` string where `size` is the maximum size of the resource. | ||
|  | An array of ranges will be returned or negative numbers indicating an error parsing. | ||
|  | 
 | ||
|  |   * `-2` signals a malformed header string | ||
|  |   * `-1` signals an unsatisfiable range | ||
|  | 
 | ||
|  | <!-- eslint-disable no-undef --> | ||
|  | 
 | ||
|  | ```js | ||
|  | // parse header from request | ||
|  | var range = parseRange(size, req.headers.range) | ||
|  | 
 | ||
|  | // the type of the range | ||
|  | if (range.type === 'bytes') { | ||
|  |   // the ranges | ||
|  |   range.forEach(function (r) { | ||
|  |     // do something with r.start and r.end | ||
|  |   }) | ||
|  | } | ||
|  | ``` | ||
|  | 
 | ||
|  | #### Options
 | ||
|  | 
 | ||
|  | These properties are accepted in the options object. | ||
|  | 
 | ||
|  | ##### combine
 | ||
|  | 
 | ||
|  | Specifies if overlapping & adjacent 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. | ||
|  | 
 | ||
|  | <!-- eslint-disable no-undef --> | ||
|  | 
 | ||
|  | ```js | ||
|  | parseRange(100, 'bytes=50-55,0-10,5-10,56-60', { combine: true }) | ||
|  | // => [ | ||
|  | //      { start: 0,  end: 10 }, | ||
|  | //      { start: 50, end: 60 } | ||
|  | //    ] | ||
|  | ``` | ||
|  | 
 | ||
|  | ## License
 | ||
|  | 
 | ||
|  | [MIT](LICENSE) | ||
|  | 
 | ||
|  | [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/range-parser/master | ||
|  | [coveralls-url]: https://coveralls.io/r/jshttp/range-parser?branch=master | ||
|  | [node-image]: https://badgen.net/npm/node/range-parser | ||
|  | [node-url]: https://nodejs.org/en/download | ||
|  | [npm-downloads-image]: https://badgen.net/npm/dm/range-parser | ||
|  | [npm-url]: https://npmjs.org/package/range-parser | ||
|  | [npm-version-image]: https://badgen.net/npm/v/range-parser | ||
|  | [travis-image]: https://badgen.net/travis/jshttp/range-parser/master | ||
|  | [travis-url]: https://travis-ci.org/jshttp/range-parser |