mirror of
https://github.com/amark/gun.git
synced 2025-06-09 07:36:44 +00:00
66 lines
2.0 KiB
JavaScript
66 lines
2.0 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 when the instance metadata service responds (or fails). 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 = function(err) { if (err) throw err; };
|
|
try {
|
|
var creds = JSON.parse(AWS.util.readFileSync(this.filename));
|
|
AWS.Credentials.call(this, creds);
|
|
if (!this.accessKeyId || !this.secretAccessKey) {
|
|
throw new Error('Credentials not set in ' + this.filename);
|
|
}
|
|
this.expired = false;
|
|
callback();
|
|
} catch (err) {
|
|
callback(err);
|
|
}
|
|
}
|
|
|
|
});
|