Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / range-parser / index.js
1 /*!
2  * range-parser
3  * Copyright(c) 2012-2014 TJ Holowaychuk
4  * MIT Licensed
5  */
6
7 'use strict';
8
9 /**
10  * Module exports.
11  * @public
12  */
13
14 module.exports = rangeParser;
15
16 /**
17  * Parse "Range" header `str` relative to the given file `size`.
18  *
19  * @param {Number} size
20  * @param {String} str
21  * @return {Array}
22  * @public
23  */
24
25 function rangeParser(size, str) {
26   var valid = true;
27   var i = str.indexOf('=');
28
29   if (-1 == i) return -2;
30
31   var arr = str.slice(i + 1).split(',').map(function(range){
32     var range = range.split('-')
33       , start = parseInt(range[0], 10)
34       , end = parseInt(range[1], 10);
35
36     // -nnn
37     if (isNaN(start)) {
38       start = size - end;
39       end = size - 1;
40     // nnn-
41     } else if (isNaN(end)) {
42       end = size - 1;
43     }
44
45     // limit last-byte-pos to current length
46     if (end > size - 1) end = size - 1;
47
48     // invalid
49     if (isNaN(start)
50       || isNaN(end)
51       || start > end
52       || start < 0) valid = false;
53
54     return {
55       start: start,
56       end: end
57     };
58   });
59
60   arr.type = str.slice(0, i);
61
62   return valid ? arr : -1;
63 }