UNPKG

@vectorx/cloud-toolkit

Version:

VectorX Cloud Toolkit

193 lines (192 loc) 8.26 kB
"use strict"; 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);