Innovenergy_trunk/frontend/node_modules/testcafe-reporter-dashboard/lib/upload.js

78 lines
3.0 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Uploader = void 0;
const internal_1 = require("./types/internal");
const texts_1 = require("./texts");
class Uploader {
constructor(readFile, transport, logger) {
this._transport = transport;
this._uploads = [];
this._logger = logger;
this._readFile = readFile;
}
async _getUploadInfo(uploadEntityId) {
const response = await this._transport.fetchFromDashboard('api/getUploadUrl');
if (response.ok)
return await response.json();
this._logger.error(texts_1.createGetUploadInfoError(uploadEntityId, response.toString()));
return null;
}
async _upload(uploadInfo, uploadEntity, uploadError) {
const { uploadUrl, uploadId } = uploadInfo;
const response = await this._transport.fetch(uploadUrl, {
method: 'PUT',
headers: {
'Content-Length': uploadEntity.length
},
body: uploadEntity
});
await this._transport.sendResolveCommand({
aggregateId: uploadId,
aggregateName: internal_1.AggregateNames.Upload,
type: internal_1.AggregateCommandType.createUpload,
payload: {
status: response.ok ? internal_1.UploadStatus.Completed : internal_1.UploadStatus.Failed
}
});
if (!response.ok)
this._logger.error(`${uploadError}. Response: ${response}`);
}
async uploadFile(filePath) {
const uploadInfo = await this._getUploadInfo(filePath);
if (!uploadInfo)
return void 0;
let file = null;
try {
file = await this._readFile(filePath);
}
catch (e) {
this._logger.error(e.message);
return void 0;
}
this._uploads.push(this._upload(uploadInfo, file, texts_1.createFileUploadError(uploadInfo.uploadId, filePath)));
return uploadInfo.uploadId;
}
requestUploadEntity(uploadInfo, uploadObject, error) {
const buffer = Buffer.from(JSON.stringify(uploadObject, (key, value) => value instanceof RegExp ? value.toString() : value));
this._uploads.push(this._upload(uploadInfo, buffer, error));
}
async uploadTest(uploadEntityId, testRunInfo) {
const uploadInfo = await this._getUploadInfo(uploadEntityId);
if (!uploadInfo)
return void 0;
this.requestUploadEntity(uploadInfo, testRunInfo, texts_1.createTestUploadError(uploadInfo.uploadId, uploadEntityId));
return uploadInfo.uploadId;
}
async uploadRunWarning(uploadEntityId, warningInfo) {
const uploadInfo = await this._getUploadInfo(uploadEntityId);
if (!uploadInfo)
return void 0;
this.requestUploadEntity(uploadInfo, warningInfo, texts_1.createWarningUploadError(uploadInfo.uploadId, uploadEntityId));
return uploadInfo.uploadId;
}
async waitUploads() {
await Promise.all(this._uploads);
}
}
exports.Uploader = Uploader;