cloud-presign
Version:
A unified presigned URL generator for multiple cloud platforms
40 lines (39 loc) • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getProvider = getProvider;
const types_1 = require("../types");
const aws_1 = require("./aws");
const gcp_1 = require("./gcp");
const azure_1 = require("./azure");
const digital_ocean_1 = require("./digital-ocean");
/**
* Get the appropriate provider implementation based on configuration
* @param config - The loaded configuration
* @returns Provider implementation
*/
function getProvider(config) {
switch (config.provider) {
case types_1.CloudProvider.AWS:
if (!config.aws) {
throw new Error('AWS configuration is missing');
}
return new aws_1.AwsProvider(config.aws, config.expiration);
case types_1.CloudProvider.GCP:
if (!config.gcp) {
throw new Error('GCP configuration is missing');
}
return new gcp_1.GcpProvider(config.gcp, config.expiration);
case types_1.CloudProvider.AZURE:
if (!config.azure) {
throw new Error('Azure configuration is missing');
}
return new azure_1.AzureProvider(config.azure, config.expiration);
case types_1.CloudProvider.DIGITAL_OCEAN:
if (!config.digitalOcean) {
throw new Error('Digital Ocean configuration is missing');
}
return new digital_ocean_1.DigitalOceanProvider(config.digitalOcean, config.expiration);
default:
throw new Error(`Unsupported provider: ${config.provider}`);
}
}