108 lines
3.2 KiB
JavaScript
108 lines
3.2 KiB
JavaScript
"use strict";
|
|
|
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
|
|
var _interopRequireWildcard = require("@babel/runtime-corejs2/helpers/interopRequireWildcard");
|
|
|
|
var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
|
|
|
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
|
|
_Object$defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
|
|
var _exportNames = {
|
|
createUploadManager: true
|
|
};
|
|
exports.createUploadManager = createUploadManager;
|
|
exports["default"] = upload;
|
|
|
|
var _resume = _interopRequireWildcard(require("./resume"));
|
|
|
|
_Object$keys(_resume).forEach(function (key) {
|
|
if (key === "default" || key === "__esModule") return;
|
|
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
|
|
_Object$defineProperty(exports, key, {
|
|
enumerable: true,
|
|
get: function get() {
|
|
return _resume[key];
|
|
}
|
|
});
|
|
});
|
|
|
|
var _direct = _interopRequireDefault(require("./direct"));
|
|
|
|
var _logger = _interopRequireDefault(require("../logger"));
|
|
|
|
var _utils = require("../utils");
|
|
|
|
var _hosts = require("./hosts");
|
|
|
|
var _base = require("./base");
|
|
|
|
_Object$keys(_base).forEach(function (key) {
|
|
if (key === "default" || key === "__esModule") return;
|
|
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
|
|
_Object$defineProperty(exports, key, {
|
|
enumerable: true,
|
|
get: function get() {
|
|
return _base[key];
|
|
}
|
|
});
|
|
});
|
|
|
|
function createUploadManager(options, handlers, hostPool, logger) {
|
|
if (options.config && options.config.forceDirect) {
|
|
logger.info('ues forceDirect mode.');
|
|
return new _direct["default"](options, handlers, hostPool, logger);
|
|
}
|
|
|
|
if (options.file.size > 4 * _utils.MB) {
|
|
logger.info('file size over 4M, use Resume.');
|
|
return new _resume["default"](options, handlers, hostPool, logger);
|
|
}
|
|
|
|
logger.info('file size less or equal than 4M, use Direct.');
|
|
return new _direct["default"](options, handlers, hostPool, logger);
|
|
}
|
|
/**
|
|
* @param file 上传文件
|
|
* @param key 目标文件名
|
|
* @param token 上传凭证
|
|
* @param putExtra 上传文件的相关资源信息配置
|
|
* @param config 上传任务的配置
|
|
* @returns 返回用于上传任务的可观察对象
|
|
*/
|
|
|
|
|
|
function upload(file, key, token, putExtra, config) {
|
|
// 为每个任务创建单独的 Logger
|
|
var logger = new _logger["default"](token, config === null || config === void 0 ? void 0 : config.disableStatisticsReport, config === null || config === void 0 ? void 0 : config.debugLogLevel, file.name);
|
|
var options = {
|
|
file: file,
|
|
key: key,
|
|
token: token,
|
|
putExtra: putExtra,
|
|
config: (0, _utils.normalizeUploadConfig)(config, logger)
|
|
}; // 创建 host 池
|
|
|
|
var hostPool = new _hosts.HostPool(options.config.uphost);
|
|
return new _utils.Observable(function (observer) {
|
|
var manager = createUploadManager(options, {
|
|
onData: function onData(data) {
|
|
return observer.next(data);
|
|
},
|
|
onError: function onError(err) {
|
|
return observer.error(err);
|
|
},
|
|
onComplete: function onComplete(res) {
|
|
return observer.complete(res);
|
|
}
|
|
}, hostPool, logger);
|
|
manager.putFile();
|
|
return manager.stop.bind(manager);
|
|
});
|
|
} |