const minioClient = require('./minio') const fs = require('fs') // Upload File to s3 bucket exports.uploadObject = async (file, bucketName) => { const fileStream = fs.createReadStream(file.path) const uploadedFile = await minioClient.putObject(bucketName, `${file.filename}-${file.originalName}`, fileStream) uploadedFile.fileURL = 'https://' + process.env.AWS_ENDPOINT + '/' + bucketName + '/' + file.filename + '-' + file.originalName uploadedFile.fileName = file.filename + '-' + file.originalName uploadedFile.fileEndpoint = process.env.AWS_ENDPOINT return uploadedFile } exports.listOfObjects = (bucketName) => { return new Promise((resolve, reject) => { let objects = [] const stream = minioClient.listObjectsV2(bucketName, '', true) stream.on('data', (obj) => { objects.push(obj) }) stream.on('error', (err) => { reject(err) }) stream.on('end', () => { resolve(objects) }) }) } exports.signedUrl = (bucketName, fileName) => { return minioClient.presignedUrl('GET', bucketName, fileName, 60 * 60) } exports.deleteObject = (fileName, bucketName) => { return minioClient.removeObject(bucketName, fileName) } exports.copyObject = (targetBucket, fileName, sourceBucketAndFile) => { return minioClient.copyObject(targetBucket, fileName, sourceBucketAndFile) } exports.removeObject = (bucketName, fileName) => { return minioClient.removeObject(bucketName, fileName) }