chunk-splitter
Version:
File chunk splitter
100 lines (78 loc) • 3.23 kB
JavaScript
;
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