index.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
  3. var _interopRequireWildcard = require("@babel/runtime-corejs2/helpers/interopRequireWildcard");
  4. var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
  5. var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
  6. _Object$defineProperty(exports, "__esModule", {
  7. value: true
  8. });
  9. var _exportNames = {
  10. createUploadManager: true
  11. };
  12. exports.createUploadManager = createUploadManager;
  13. exports["default"] = upload;
  14. var _resume = _interopRequireWildcard(require("./resume"));
  15. _Object$keys(_resume).forEach(function (key) {
  16. if (key === "default" || key === "__esModule") return;
  17. if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
  18. _Object$defineProperty(exports, key, {
  19. enumerable: true,
  20. get: function get() {
  21. return _resume[key];
  22. }
  23. });
  24. });
  25. var _direct = _interopRequireDefault(require("./direct"));
  26. var _logger = _interopRequireDefault(require("../logger"));
  27. var _utils = require("../utils");
  28. var _hosts = require("./hosts");
  29. var _base = require("./base");
  30. _Object$keys(_base).forEach(function (key) {
  31. if (key === "default" || key === "__esModule") return;
  32. if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
  33. _Object$defineProperty(exports, key, {
  34. enumerable: true,
  35. get: function get() {
  36. return _base[key];
  37. }
  38. });
  39. });
  40. function createUploadManager(options, handlers, hostPool, logger) {
  41. if (options.config && options.config.forceDirect) {
  42. logger.info('ues forceDirect mode.');
  43. return new _direct["default"](options, handlers, hostPool, logger);
  44. }
  45. if (options.file.size > 4 * _utils.MB) {
  46. logger.info('file size over 4M, use Resume.');
  47. return new _resume["default"](options, handlers, hostPool, logger);
  48. }
  49. logger.info('file size less or equal than 4M, use Direct.');
  50. return new _direct["default"](options, handlers, hostPool, logger);
  51. }
  52. /**
  53. * @param file 上传文件
  54. * @param key 目标文件名
  55. * @param token 上传凭证
  56. * @param putExtra 上传文件的相关资源信息配置
  57. * @param config 上传任务的配置
  58. * @returns 返回用于上传任务的可观察对象
  59. */
  60. function upload(file, key, token, putExtra, config) {
  61. // 为每个任务创建单独的 Logger
  62. 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);
  63. var options = {
  64. file: file,
  65. key: key,
  66. token: token,
  67. putExtra: putExtra,
  68. config: (0, _utils.normalizeUploadConfig)(config, logger)
  69. }; // 创建 host 池
  70. var hostPool = new _hosts.HostPool(options.config.uphost);
  71. return new _utils.Observable(function (observer) {
  72. var manager = createUploadManager(options, {
  73. onData: function onData(data) {
  74. return observer.next(data);
  75. },
  76. onError: function onError(err) {
  77. return observer.error(err);
  78. },
  79. onComplete: function onComplete(res) {
  80. return observer.complete(res);
  81. }
  82. }, hostPool, logger);
  83. manager.putFile();
  84. return manager.stop.bind(manager);
  85. });
  86. }