mirror of
https://github.com/cderche/greenlock-storage-s3
synced 2025-05-13 16:16:32 +00:00
69 lines
2.1 KiB
JavaScript
69 lines
2.1 KiB
JavaScript
var AWS = require('../core');
|
|
|
|
/**
|
|
* Represents credentials from a JSON file on disk.
|
|
* If the credentials expire, the SDK can {refresh} the credentials
|
|
* from the file.
|
|
*
|
|
* The format of the file should be similar to the options passed to
|
|
* {AWS.Config}:
|
|
*
|
|
* ```javascript
|
|
* {accessKeyId: 'akid', secretAccessKey: 'secret', sessionToken: 'optional'}
|
|
* ```
|
|
*
|
|
* @example Loading credentials from disk
|
|
* var creds = new AWS.FileSystemCredentials('./configuration.json');
|
|
* creds.accessKeyId == 'AKID'
|
|
*
|
|
* @!attribute filename
|
|
* @readonly
|
|
* @return [String] the path to the JSON file on disk containing the
|
|
* credentials.
|
|
* @!macro nobrowser
|
|
*/
|
|
AWS.FileSystemCredentials = AWS.util.inherit(AWS.Credentials, {
|
|
|
|
/**
|
|
* @overload AWS.FileSystemCredentials(filename)
|
|
* Creates a new FileSystemCredentials object from a filename
|
|
*
|
|
* @param filename [String] the path on disk to the JSON file to load.
|
|
*/
|
|
constructor: function FileSystemCredentials(filename) {
|
|
AWS.Credentials.call(this);
|
|
this.filename = filename;
|
|
this.get(function() {});
|
|
},
|
|
|
|
/**
|
|
* Loads the credentials from the {filename} on disk.
|
|
*
|
|
* @callback callback function(err)
|
|
* Called after the JSON file on disk is read and parsed. When this callback
|
|
* is called with no error, it means that the credentials information
|
|
* has been loaded into the object (as the `accessKeyId`, `secretAccessKey`,
|
|
* and `sessionToken` properties).
|
|
* @param err [Error] if an error occurred, this value will be filled
|
|
* @see get
|
|
*/
|
|
refresh: function refresh(callback) {
|
|
if (!callback) callback = AWS.util.fn.callback;
|
|
try {
|
|
var creds = JSON.parse(AWS.util.readFileSync(this.filename));
|
|
AWS.Credentials.call(this, creds);
|
|
if (!this.accessKeyId || !this.secretAccessKey) {
|
|
throw AWS.util.error(
|
|
new Error('Credentials not set in ' + this.filename),
|
|
{ code: 'FileSystemCredentialsProviderFailure' }
|
|
);
|
|
}
|
|
this.expired = false;
|
|
callback();
|
|
} catch (err) {
|
|
callback(err);
|
|
}
|
|
}
|
|
|
|
});
|