UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

139 lines (136 loc) 4.57 kB
import _regeneratorRuntime from '@babel/runtime/regenerator'; import { _ as __awaiter } from '../../tslib.es6-848120af.js'; import { getCOSInstance } from './helper.mjs'; import '../../bite/format-bite.mjs'; import '../../third-party/cos-nodejs-sdk-v5.mjs'; /** * 解除腾讯云 COS 图片封禁 * - 当图片因内容审核被封禁后,可调用此方法解除封禁 * - 底层通过 putObjectCopy 设置 `x-cos-forbid-state: 0` 来解除封禁状态 * * @param {object} config 配置信息 * @param {string} config.secretId 腾讯云 SecretId * @param {string} config.secretKey 腾讯云 SecretKey * @param {string} config.bucket COS 存储桶名称(如 'my-bucket-1250000000') * @param {string} config.region COS 存储桶所在区域(如 'ap-guangzhou') * @param {string} config.key 被封禁的对象键(Object Key),即图片在存储桶中的路径 * @returns {Promise<object>} 解封结果 * @throws 当参数不全时会抛出错误 * @example * ```ts * // 解除单张图片的封禁 * await unfreezeCosImage({ * secretId: 'your-secret-id', * secretKey: 'your-secret-key', * bucket: 'my-bucket-1250000000', * region: 'ap-guangzhou', * key: 'images/photo.jpg', * }); * ``` */ function unfreezeCosImage(_ref) { var secretId = _ref.secretId, secretKey = _ref.secretKey, bucket = _ref.bucket, region = _ref.region, key = _ref.key; return new Promise(function (resolve, reject) { if (!secretId || !secretKey || !bucket || !region || !key) { reject(new Error('[unfreezeCosImage] 参数不全')); return; } var cos = getCOSInstance(secretId, secretKey); cos.putObjectCopy({ Bucket: bucket, Region: region, Key: key, CopySource: "".concat(bucket, ".cos.").concat(region, ".myqcloud.com/").concat(key), MetadataDirective: 'Replaced', Headers: { 'x-cos-forbid-state': '0' } }, function (err, data) { if (err) { reject(err); return; } resolve(data); }); }); } /** * 批量解除腾讯云 COS 图片封禁 * - 对多张被封禁的图片并行执行解封操作 * - 底层通过 Promise.allSettled 并发调用 unfreezeCosImage * * @param {object} config 配置信息 * @param {string} config.secretId 腾讯云 SecretId * @param {string} config.secretKey 腾讯云 SecretKey * @param {string} config.bucket COS 存储桶名称(如 'my-bucket-1250000000') * @param {string} config.region COS 存储桶所在区域(如 'ap-guangzhou') * @param {Array<string>} config.keys 被封禁的对象键列表 * @returns {Promise<Array<object>>} 每张图片的解封结果数组,包含 key、success、data/error 字段 * @example * ```ts * const results = await batchUnfreezeCosImages({ * secretId: 'your-secret-id', * secretKey: 'your-secret-key', * bucket: 'my-bucket-1250000000', * region: 'ap-guangzhou', * keys: ['images/photo1.jpg', 'images/photo2.jpg'], * }); * * results.forEach(r => { * if (r.success) { * console.log(`${r.key} 解封成功`); * } else { * console.error(`${r.key} 解封失败:`, r.error); * } * }); * ``` */ function batchUnfreezeCosImages(_ref2) { var secretId = _ref2.secretId, secretKey = _ref2.secretKey, bucket = _ref2.bucket, region = _ref2.region, keys = _ref2.keys; return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() { var results; return _regeneratorRuntime.wrap(function (_context) { while (1) switch (_context.prev = _context.next) { case 0: _context.next = 1; return Promise.allSettled(keys.map(function (key) { return unfreezeCosImage({ secretId: secretId, secretKey: secretKey, bucket: bucket, region: region, key: key }); })); case 1: results = _context.sent; return _context.abrupt("return", results.map(function (result, index) { if (result.status === 'fulfilled') { return { key: keys[index], success: true, data: result.value }; } return { key: keys[index], success: false, error: result.reason }; })); case 2: case "end": return _context.stop(); } }, _callee); })); } export { batchUnfreezeCosImages, unfreezeCosImage };