diff options
Diffstat (limited to 'vnfmarket/src/main/webapp/vnfmarket/node_modules/range-parser/index.js')
-rw-r--r-- | vnfmarket/src/main/webapp/vnfmarket/node_modules/range-parser/index.js | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/vnfmarket/src/main/webapp/vnfmarket/node_modules/range-parser/index.js b/vnfmarket/src/main/webapp/vnfmarket/node_modules/range-parser/index.js new file mode 100644 index 00000000..814e5332 --- /dev/null +++ b/vnfmarket/src/main/webapp/vnfmarket/node_modules/range-parser/index.js @@ -0,0 +1,63 @@ +/*! + * range-parser + * Copyright(c) 2012-2014 TJ Holowaychuk + * MIT Licensed + */ + +'use strict'; + +/** + * Module exports. + * @public + */ + +module.exports = rangeParser; + +/** + * Parse "Range" header `str` relative to the given file `size`. + * + * @param {Number} size + * @param {String} str + * @return {Array} + * @public + */ + +function rangeParser(size, str) { + var valid = true; + var i = str.indexOf('='); + + if (-1 == i) return -2; + + var arr = str.slice(i + 1).split(',').map(function(range){ + var range = range.split('-') + , start = parseInt(range[0], 10) + , end = parseInt(range[1], 10); + + // -nnn + if (isNaN(start)) { + start = size - end; + end = size - 1; + // nnn- + } else if (isNaN(end)) { + end = size - 1; + } + + // limit last-byte-pos to current length + if (end > size - 1) end = size - 1; + + // invalid + if (isNaN(start) + || isNaN(end) + || start > end + || start < 0) valid = false; + + return { + start: start, + end: end + }; + }); + + arr.type = str.slice(0, i); + + return valid ? arr : -1; +} |