2025-04-02 21:57:33 +08:00

127 lines
6.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
import { CRC32 } from '../utils/crc32';
import { direct } from '../api';
import Base from './base';
var Direct = /** @class */ (function (_super) {
__extends(Direct, _super);
function Direct() {
return _super !== null && _super.apply(this, arguments) || this;
}
Direct.prototype.run = function () {
return __awaiter(this, void 0, void 0, function () {
var formData, crcSign, customVars_1, metadata_1, result;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
this.logger.info('start run Direct.');
formData = new FormData();
formData.append('file', this.file);
formData.append('token', this.token);
if (this.key != null) {
formData.append('key', this.key);
}
formData.append('fname', this.putExtra.fname);
if (!this.config.checkByServer) return [3 /*break*/, 2];
return [4 /*yield*/, CRC32.file(this.file)];
case 1:
crcSign = _a.sent();
formData.append('crc32', crcSign.toString());
_a.label = 2;
case 2:
if (this.putExtra.customVars) {
this.logger.info('init customVars.');
customVars_1 = this.putExtra.customVars;
Object.keys(customVars_1).forEach(function (key) { return formData.append(key, customVars_1[key].toString()); });
this.logger.info('customVars inited.');
}
if (this.putExtra.metadata) {
this.logger.info('init metadata.');
metadata_1 = this.putExtra.metadata;
Object.keys(metadata_1).forEach(function (key) { return formData.append(key, metadata_1[key].toString()); });
}
this.logger.info('formData inited.');
return [4 /*yield*/, direct(this.uploadHost.getUrl(), formData, {
onProgress: function (data) {
_this.updateDirectProgress(data.loaded, data.total);
},
onCreate: function (xhr) { return _this.addXhr(xhr); }
})];
case 3:
result = _a.sent();
this.logger.info('Direct progress finish.');
this.finishDirectProgress();
return [2 /*return*/, result];
}
});
});
};
Direct.prototype.updateDirectProgress = function (loaded, total) {
// 当请求未完成时可能进度会达到100所以total + 1来防止这种情况出现
this.progress = { total: this.getProgressInfoItem(loaded, total + 1) };
this.onData(this.progress);
};
Direct.prototype.finishDirectProgress = function () {
// 在某些浏览器环境下xhr 的 progress 事件无法被触发progress 为 null这里 fake 下
if (!this.progress) {
this.logger.warn('progress is null.');
this.progress = { total: this.getProgressInfoItem(this.file.size, this.file.size) };
this.onData(this.progress);
return;
}
var total = this.progress.total;
this.progress = { total: this.getProgressInfoItem(total.loaded + 1, total.size) };
this.onData(this.progress);
};
return Direct;
}(Base));
export default Direct;
//# sourceMappingURL=direct.js.map