{"size": 1164, "ext": "js", "max_stars_repo_path": "client/src/models/s3-upload/credentials.js", "max_stars_repo_name": "NShaforostov/cloud-pipeline", "max_stars_repo_stars_event_min_datetime": null, "max_stars_repo_stars_event_max_datetime": null, "max_issues_repo_path": "client/src/models/s3-upload/credentials.js", "max_issues_repo_name": "NShaforostov/cloud-pipeline", "max_issues_repo_issues_event_min_datetime": "2021-03-25T20:09:54.000Z", "max_issues_repo_issues_event_max_datetime": "2021-10-01T01:02:39.000Z", "max_forks_repo_path": "client/src/models/s3-upload/credentials.js", "max_forks_repo_name": "NShaforostov/cloud-pipeline", "max_forks_repo_forks_event_min_datetime": null, "max_forks_repo_forks_event_max_datetime": null}
{"max_stars_count": null, "max_issues_count": 378, "max_forks_count": null, "avg_line_length": 29.8461538462, "max_line_length": 81, "alphanum_fraction": 0.6890034364}
/*
 * Copyright 2017-2020 EPAM Systems, Inc. (https://www.epam.com/)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

import AWS from 'aws-sdk/index';

export default class Credentials extends AWS.Credentials {
  updateCredentials;

  constructor (accessKeyId, secretAccessKey, sessionToken, updateCredentialsFn) {
    super(accessKeyId, secretAccessKey, sessionToken);
    this.updateCredentials = updateCredentialsFn;
  }

  refresh = (callback) => {
    if (this.expired) {
      this.updateCredentials()
        .then(() => {
          callback();
        })
        .catch(callback);
    } else {
      super.refresh(callback);
    }
  }
}
