import { Storage } from 'aws-amplify'; import { App } from '../config'; export async function listFromS3(bucket: string, folder: string, fileName: string, options?: any) { const { useStage } = options ?? {}; const env = App.Environment; const storage = env && env.STORAGE; const envStage = App.IsLocalhost || !env ? 'dev' : env.stage; const url = !!useStage && env && storage && storage.stages && storage.stages[envStage] ? `stage:${storage.stages[envStage]}/${folder}/${fileName}/` : `${folder}/${fileName}/`; return await Storage.list(url, { bucket }); } export async function getFromS3(bucket: string, sourceFile: string, options?: any) { const { useStage, ...opts } = options ?? {}; const env = App.Environment; const storage = env && env.STORAGE; const envStage = App.IsLocalhost || !env ? 'dev' : env.stage; const stageSourceFile = !!useStage && env && storage && storage.stages && storage.stages[envStage] ? `stage:${storage.stages[envStage]}/${sourceFile}` : sourceFile; return await Storage.get(stageSourceFile, { download: true, ...opts, bucket }); } export async function putToS3(bucket: string, sourceFile: string, data: any, options?: any) { const { useStage, ...opts } = options ?? {}; const env = App.Environment; const storage = env && env.STORAGE; const envStage = App.IsLocalhost || !env ? 'dev' : env.stage; const stageSourceFile = !!useStage && storage && storage.stages && storage.stages[envStage] ? `stage:${storage.stages[envStage]}/${sourceFile}` : sourceFile; return await Storage.put(stageSourceFile, data, { ...opts, bucket }); }