@andrewlwn77/s3-upload-mcp-server
Version:
Pure Node.js MCP server for uploading images to AWS S3 with high-performance validation using Sharp and file-type
68 lines • 2.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.BucketManagementService = void 0;
const s3_client_1 = require("../infrastructure/s3-client");
const config_1 = require("../utils/config");
const logger_1 = require("../utils/logger");
class BucketManagementService {
constructor() {
this.s3Client = new s3_client_1.S3Client();
this.configManager = config_1.ConfigManager.getInstance();
this.logger = logger_1.Logger.getInstance();
}
async createBucketIfNotExists(bucketName, region = 'us-east-1', enablePublicRead = false) {
try {
// Validate bucket name
this.configManager.validateBucket(bucketName);
this.logger.info('Creating bucket if not exists', { bucketName, region, enablePublicRead });
const result = await this.s3Client.createBucket(bucketName, region, enablePublicRead);
if (!result.success) {
return result;
}
this.logger.info('Bucket operation completed', {
bucket: bucketName,
created: result.created,
alreadyExists: result.already_exists,
publicRead: result.public_read_enabled
});
return result;
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Unknown bucket creation error';
this.logger.error('Bucket creation service failed', { error: errorMessage, bucketName });
return {
success: false,
error: {
code: 'BUCKET_ERROR',
message: errorMessage
}
};
}
}
async setBucketPublicReadPolicy(bucketName) {
try {
// Validate bucket name
this.configManager.validateBucket(bucketName);
this.logger.info('Setting bucket public read policy', { bucketName });
const result = await this.s3Client.setBucketPublicReadPolicy(bucketName);
if (!result.success) {
return result;
}
this.logger.info('Bucket policy applied successfully', { bucket: bucketName });
return result;
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Unknown bucket policy error';
this.logger.error('Bucket policy service failed', { error: errorMessage, bucketName });
return {
success: false,
error: {
code: 'BUCKET_ERROR',
message: errorMessage
}
};
}
}
}
exports.BucketManagementService = BucketManagementService;
//# sourceMappingURL=bucket-management-service.js.map