UNPKG

cfn-forge

Version:

CloudFormation deployment automation tool with git-based workflows

155 lines (140 loc) 4.57 kB
/** * S3 Client Interface * Defines the contract for S3 operations to ensure portability */ class IS3Client { /** * Upload a file to S3 * @param {Object} params - Upload parameters * @param {string} params.bucket - S3 bucket name * @param {string} params.key - S3 object key * @param {Buffer|string} params.body - File content * @param {Object} params.metadata - Object metadata * @returns {Promise<Object>} Upload result */ async uploadFile(params) { throw new Error('Not implemented'); } /** * Download a file from S3 * @param {Object} params - Download parameters * @param {string} params.bucket - S3 bucket name * @param {string} params.key - S3 object key * @returns {Promise<Buffer>} File content */ async downloadFile(params) { throw new Error('Not implemented'); } /** * Delete a file from S3 * @param {Object} params - Delete parameters * @param {string} params.bucket - S3 bucket name * @param {string} params.key - S3 object key * @returns {Promise<void>} */ async deleteFile(params) { throw new Error('Not implemented'); } /** * Check if an object exists in S3 * @param {Object} params - Check parameters * @param {string} params.bucket - S3 bucket name * @param {string} params.key - S3 object key * @returns {Promise<boolean>} True if object exists */ async objectExists(params) { throw new Error('Not implemented'); } /** * List objects in S3 bucket * @param {Object} params - List parameters * @param {string} params.bucket - S3 bucket name * @param {string} params.prefix - Object key prefix * @param {number} params.maxKeys - Maximum number of keys * @returns {Promise<Array>} Array of objects */ async listObjects(params) { throw new Error('Not implemented'); } /** * Get object metadata * @param {Object} params - Metadata parameters * @param {string} params.bucket - S3 bucket name * @param {string} params.key - S3 object key * @returns {Promise<Object>} Object metadata */ async getObjectMetadata(params) { throw new Error('Not implemented'); } /** * Generate presigned URL for object * @param {Object} params - URL parameters * @param {string} params.bucket - S3 bucket name * @param {string} params.key - S3 object key * @param {number} params.expiresIn - URL expiration in seconds * @param {string} params.operation - Operation (getObject, putObject) * @returns {Promise<string>} Presigned URL */ async generatePresignedUrl(params) { throw new Error('Not implemented'); } /** * Create a multipart upload * @param {Object} params - Upload parameters * @param {string} params.bucket - S3 bucket name * @param {string} params.key - S3 object key * @returns {Promise<Object>} Upload ID and metadata */ async createMultipartUpload(params) { throw new Error('Not implemented'); } /** * Upload a part for multipart upload * @param {Object} params - Part upload parameters * @returns {Promise<Object>} Part upload result */ async uploadPart(params) { throw new Error('Not implemented'); } /** * Complete multipart upload * @param {Object} params - Complete parameters * @returns {Promise<Object>} Complete result */ async completeMultipartUpload(params) { throw new Error('Not implemented'); } /** * Abort multipart upload * @param {Object} params - Abort parameters * @returns {Promise<void>} */ async abortMultipartUpload(params) { throw new Error('Not implemented'); } /** * Upload directory to S3 * @param {Object} params - Directory upload parameters * @param {string} params.localPath - Local directory path * @param {string} params.bucket - S3 bucket name * @param {string} params.prefix - S3 key prefix * @param {Function} params.progressCallback - Progress callback * @returns {Promise<Array>} Array of upload results */ async uploadDirectory(params) { throw new Error('Not implemented'); } /** * Create ZIP package and upload to S3 * @param {Object} params - Package parameters * @param {string} params.sourcePath - Source directory * @param {string} params.bucket - S3 bucket name * @param {string} params.key - S3 object key * @param {string[]} params.excludePatterns - Patterns to exclude * @returns {Promise<Object>} Upload result with package info */ async uploadPackage(params) { throw new Error('Not implemented'); } } module.exports = IS3Client;