réplica de
				https://github.com/cderche/greenlock-storage-s3
				synced 2025-11-04 06:02:46 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			69 líneas
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			69 líneas
		
	
	
		
			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);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
});
 |