Added support for external providers as npm modules.

This commit is contained in:
Cristobal Vergara 2016-01-28 11:18:37 -08:00
parent 1bcb33a115
commit 9aba5658a2
1 changed files with 18 additions and 4 deletions

View File

@ -79,8 +79,17 @@ function createClient(options) {
// Try to load the provider from providers folder
handler = require('./providers/' + provider);
} catch (err) {
// Fall back to pkgcloud
handler = require('pkgcloud').storage;
try {
// Fall back to using an external provider
handler = require(provider);
if (!handler || !handler.createClient) {
// Fall back to pkgcloud
handler = require('pkgcloud').storage;
}
} catch(err) {
// Fall back to pkgcloud
handler = require('pkgcloud').storage;
}
}
patchContainerAndFileClass(provider);
return handler.createClient(options);
@ -96,8 +105,13 @@ function getProvider(provider) {
// Try to load the provider from providers folder
return require('./providers/' + provider);
} catch (err) {
// Fall back to pkgcloud
return require('pkgcloud').providers[provider];
try {
// Fall back to using an external provider
return require(provider);
} catch(err) {
// Fall back to pkgcloud
return require('pkgcloud').providers[provider];
}
}
}