cloud-presign
Version:
A unified presigned URL generator for multiple cloud platforms
41 lines (36 loc) • 1.36 kB
text/typescript
import { Config, CloudProvider, Provider } from '../types';
import { AwsProvider } from './aws';
import { GcpProvider } from './gcp';
import { AzureProvider } from './azure';
import { DigitalOceanProvider } from './digital-ocean';
/**
* Get the appropriate provider implementation based on configuration
* @param config - The loaded configuration
* @returns Provider implementation
*/
export function getProvider(config: Config): Provider {
switch (config.provider) {
case CloudProvider.AWS:
if (!config.aws) {
throw new Error('AWS configuration is missing');
}
return new AwsProvider(config.aws, config.expiration);
case CloudProvider.GCP:
if (!config.gcp) {
throw new Error('GCP configuration is missing');
}
return new GcpProvider(config.gcp, config.expiration);
case CloudProvider.AZURE:
if (!config.azure) {
throw new Error('Azure configuration is missing');
}
return new AzureProvider(config.azure, config.expiration);
case CloudProvider.DIGITAL_OCEAN:
if (!config.digitalOcean) {
throw new Error('Digital Ocean configuration is missing');
}
return new DigitalOceanProvider(config.digitalOcean, config.expiration);
default:
throw new Error(`Unsupported provider: ${config.provider}`);
}
}