25 lines
905 B
TypeScript
25 lines
905 B
TypeScript
import { CloudflareStorage } from './cloudflare.storage';
|
|
import { IUploadProvider } from './upload.interface';
|
|
import { LocalStorage } from './local.storage';
|
|
|
|
export class UploadFactory {
|
|
static createStorage(): IUploadProvider {
|
|
const storageProvider = process.env.STORAGE_PROVIDER || 'local';
|
|
|
|
switch (storageProvider) {
|
|
case 'local':
|
|
return new LocalStorage(process.env.UPLOAD_DIRECTORY!);
|
|
case 'cloudflare':
|
|
return new CloudflareStorage(
|
|
process.env.CLOUDFLARE_ACCOUNT_ID!,
|
|
process.env.CLOUDFLARE_ACCESS_KEY!,
|
|
process.env.CLOUDFLARE_SECRET_ACCESS_KEY!,
|
|
process.env.CLOUDFLARE_REGION!,
|
|
process.env.CLOUDFLARE_BUCKETNAME!,
|
|
process.env.CLOUDFLARE_BUCKET_URL!
|
|
);
|
|
default:
|
|
throw new Error(`Invalid storage type ${storageProvider}`);
|
|
}
|
|
}
|
|
} |