UNPKG

chunk-splitter

Version:

File chunk splitter

100 lines (78 loc) 3.23 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _crypto = require('crypto'); var _crypto2 = _interopRequireDefault(_crypto); var _bluebird = require('bluebird'); var _bluebird2 = _interopRequireDefault(_bluebird); var _isomorphicFetch = require('isomorphic-fetch'); var _isomorphicFetch2 = _interopRequireDefault(_isomorphicFetch); var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _lodash = require('lodash'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } _bluebird2.default.promisifyAll(_fs2.default); var Assembler = function () { /* fetcher: function(url) => Promise(buffer) : checker: function(chunkIndex) => Promise(boolean) : has chunk or not */ function Assembler(destFile) { var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { urls: {} }, fetchConcurrency = _ref.fetchConcurrency, fetcher = _ref.fetcher; _classCallCheck(this, Assembler); this.filepath = filepath; this.options = { fetchConcurrency: fetchConcurrency || 1 }; if (fetcher) { this.fetcher = fetcher; } else { this.fetcher = function (url) { return (0, _isomorphicFetch2.default)(url).then(function (res) { return res.buffer(); }); }; } } _createClass(Assembler, [{ key: 'setFetcher', value: function setFetcher(func) { this.fetcher = func; } }, { key: 'check', value: function check(hashmap) {} }, { key: 'download', value: function download(hashMap) { this.hashMap = hashMap; // Check local file return _fs2.default.readdirAsync(_path2.default.resolve(_path2.default.basename(this.destFile), '.chunks')).catch(function (err) { console.log(err.code, err.type, err); return []; }).then(function (files) {}); // return Promise.map(this.hashMap, (sha1, index) => { // console.log(sha1, index); // return this.fetcher(index, 0) // .then((buffer) => { // const hash = crypto.createHash('sha1'); // hash.update(buf); // return hash.digest('hex'); // }) // .then(()) // }, { // concurrency: this.fetchConcurrency // }); } }]); return Assembler; }(); exports.default = Assembler; //# sourceMappingURL=Assembler.js.map