UNPKG

alioss-mcp

Version:

为AI编码工具提供阿里云OSS访问能力的Model Context Protocol服务器

120 lines 4.12 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.MultipartUploadManager = void 0; const fs_1 = __importDefault(require("fs")); class MultipartUploadManager { ossServer; constructor(ossServer) { this.ossServer = ossServer; } async initMultipartUpload(fileName) { try { const result = await this.ossServer["ossClient"].initMultipartUpload(fileName); if (result.res.status === 200) { return { uploadId: result.uploadId, name: result.name, }; } return null; } catch (error) { console.error("Init multipart upload error:", error); return null; } } async uploadPart(fileName, uploadId, partNo, filePath, start, end) { try { const fileSize = fs_1.default.statSync(filePath).size; const endPos = Math.min(end, fileSize); const result = await this.ossServer["ossClient"].uploadPart(fileName, uploadId, partNo, filePath, start, endPos); if (result.res.status === 200) { return { etag: result.etag, number: partNo, }; } return null; } catch (error) { console.error("Upload part error:", error); return null; } } async completeMultipartUpload(fileName, uploadId, parts) { try { const result = await this.ossServer["ossClient"].completeMultipartUpload(fileName, uploadId, parts); if (result.res.status === 200) { return { name: result.name, etag: result.etag, }; } return null; } catch (error) { console.error("Complete multipart upload error:", error); return null; } } async multipartUpload(fileName, filePath, partSize = 1024 * 1024) { try { const options = { partSize, progress: (p) => { console.log(`上传进度: ${(p * 100).toFixed(2)}%`); }, }; const result = await this.ossServer["ossClient"].multipartUpload(fileName, filePath, options); if (result.res.status === 200) { return { name: result.name, etag: result.etag, }; } return null; } catch (error) { console.error("Multipart upload error:", error); return null; } } async abortMultipartUpload(fileName, uploadId) { try { const result = await this.ossServer["ossClient"].abortMultipartUpload(fileName, uploadId); return result && result.status === 204; } catch (error) { console.error("Abort multipart upload error:", error); return false; } } async listUploads(prefix, maxUploads) { try { const options = {}; if (prefix) options.prefix = prefix; if (maxUploads) options.maxUploads = maxUploads; const result = await this.ossServer["ossClient"].listUploads(options); if (result.res.status === 200) { return { uploads: result.uploads, isTruncated: result.isTruncated, nextKeyMarker: result.nextKeyMarker, nextUploadIdMarker: result.nextUploadIdMarker, }; } return null; } catch (error) { console.error("List uploads error:", error); return null; } } } exports.MultipartUploadManager = MultipartUploadManager; //# sourceMappingURL=multipart.js.map