@opengis/fastify-table
Version:
core-plugins
39 lines (32 loc) • 1.26 kB
JavaScript
import {
PutObjectCommand,
} from '@aws-sdk/client-s3';
import client from '../client.js';
import getValidData from '../../utils/getValidData.js';
import getDataSize from '../../utils/getDataSize.js';
import dataTypes from '../../utils/handlers/dataTypes.js';
import getMimeType from '../../mime/index.js';
import getS3FilePath from './utils/getS3FilePath.js';
const uploadFile = (s3Settings) => async (fp, data) => {
const filepath = getS3FilePath(fp, s3Settings);
const validData = await getValidData({ data, types: [dataTypes.stream] });
const size = await getDataSize({ data });
const type = getMimeType(filepath);
try {
const s3Client = client.getS3Client(s3Settings);
const bucketName = s3Settings.containerName;
const bucketParams = {
Bucket: bucketName,
Key: filepath,
ContentLength: size,
ContentType: type,
Body: validData,
};
const res = await s3Client.send(new PutObjectCommand(bucketParams));
return res; // For unit tests.
}
catch (err) {
throw new Error(`Upload error s3: ${err}. Message: ${err.message}. Keys: ${Object.keys(err)}. Filepath: ${filepath}. Data type: ${typeof validData}.`);
}
};
export default uploadFile;