UNPKG

@opengis/fastify-table

Version:

core-plugins

39 lines (32 loc) 1.26 kB
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;