@vectorx/cloud-toolkit
Version:
VectorX Cloud Toolkit
193 lines (192 loc) • 8.26 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
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 __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UploadService = void 0;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const chalk_1 = __importDefault(require("chalk"));
const inversify_1 = require("inversify");
const config_1 = require("../config");
const container_1 = require("../container");
const cos_uploader_1 = require("../utils/cos-uploader");
const env_helper_1 = require("../utils/env-helper");
const logger_1 = require("../utils/logger");
const request_1 = require("../utils/request");
let UploadService = class UploadService {
constructor() {
this.authService = container_1.container.get(container_1.SERVICE_IDENTIFIERS.AuthService);
}
getCloudBaseSecretToken() {
return __awaiter(this, void 0, void 0, function* () {
if (env_helper_1.isIDE) {
return "";
}
const loginInfo = yield this.authService.getLoginInfo();
if (!loginInfo) {
throw new Error("未登录,请先登录");
}
return loginInfo.cli_token;
});
}
getToken() {
return __awaiter(this, void 0, void 0, function* () {
try {
let params = {};
if (!env_helper_1.isIDE) {
const loginInfo = yield this.authService.getLoginInfo();
if (!loginInfo) {
throw new Error("未登录,请先登录");
}
params = {
secret_id: loginInfo.secret_id,
cli_token: loginInfo.cli_token,
};
}
const response = yield request_1.request.fetch({
url: `${(0, config_1.getBaseUrl)()}/api/eros/mp/red/code/agent_pkg/upload/permit`,
headers: {
"Content-Type": "application/json",
},
method: "GET",
data: {
params,
},
});
if (response.data.code === 0) {
return response.data.data;
}
else {
throw new Error(response.data.msg);
}
}
catch (error) {
throw new Error(`获取上传Token失败: ${(error === null || error === void 0 ? void 0 : error.message) || error}`);
}
});
}
buildPreCheck(params) {
return __awaiter(this, void 0, void 0, function* () {
try {
let query = {};
if (!env_helper_1.isIDE) {
const loginInfo = yield this.authService.getLoginInfo();
if (!loginInfo) {
throw new Error("未登录,请先登录");
}
query = {
secret_id: loginInfo.secret_id,
cli_token: loginInfo.cli_token,
};
}
const res = yield request_1.request.fetch({
method: "POST",
url: `${(0, config_1.getBaseUrl)()}/api/eros/mp/red/code/agent_pkg/develop/upload_pre_check`,
headers: {},
data: {
query,
body: params,
},
});
return res.data;
}
catch (error) {
throw new Error(`上传预检失败: ${(error === null || error === void 0 ? void 0 : error.message) || error}`);
}
});
}
deploy(params) {
return __awaiter(this, void 0, void 0, function* () {
if (!env_helper_1.isIDE && !this.authService.hasLogin()) {
throw new Error("未登录,请先登录");
}
const uploader = new cos_uploader_1.Uploader({
bizName: "fe",
scene: "fe-platform",
getToken: () => this.getToken(),
});
const filePath = path_1.default.resolve(params.targetPath);
const file = fs_1.default.readFileSync(filePath);
const fileName = `miniapp-agent-${params.agentId}-${params.version}.zip`;
const stats = fs_1.default.statSync(filePath);
const response = yield uploader.post({
Body: file,
fileInfo: {
name: fileName,
type: "application/octet-stream",
size: stats.size,
},
FilePath: filePath,
});
logger_1.logger.breakLine();
logger_1.logger.info(chalk_1.default.green(`资源包上传成功: ${response.previewUrl}`));
if (response.previewUrl) {
const res = yield this.uploadAgentPackage({
agent_id: params.agentId,
version: params.version,
desc: params.desc,
file_url: response.previewUrl,
cloud_type: response.cloudType,
});
if (res.code !== 0) {
throw new Error(`[${res.code}] ${res.msg}`);
}
return res;
}
else {
throw new Error(".zip 文件服务上传失败");
}
});
}
uploadAgentPackage(params) {
return __awaiter(this, void 0, void 0, function* () {
let query = {};
if (!env_helper_1.isIDE) {
const loginInfo = yield this.authService.getLoginInfo();
if (!loginInfo) {
throw new Error("未登录,请先登录");
}
query = {
secret_id: loginInfo.secret_id,
cli_token: loginInfo.cli_token,
};
}
const res = yield request_1.request.fetch({
method: "POST",
url: `${(0, config_1.getBaseUrl)()}/api/eros/mp/red/code/agent_pkg/develop/upload`,
headers: {
"Content-Type": "application/json",
},
data: {
query,
body: params,
},
});
return res.data;
});
}
};
exports.UploadService = UploadService;
exports.UploadService = UploadService = __decorate([
(0, inversify_1.injectable)(),
__metadata("design:paramtypes", [])
], UploadService);