hexo/node_modules/ali-oss/lib/common/utils/setSTSToken.js

37 lines
1.3 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.checkCredentials = exports.setSTSToken = void 0;
const formatObjKey_1 = require("./formatObjKey");
async function setSTSToken() {
if (!this.options)
this.options = {};
const now = new Date();
if (this.stsTokenFreshTime) {
if (+now - this.stsTokenFreshTime >= this.options.refreshSTSTokenInterval) {
this.stsTokenFreshTime = now;
let credentials = await this.options.refreshSTSToken();
credentials = formatObjKey_1.formatObjKey(credentials, 'firstLowerCase');
if (credentials.securityToken) {
credentials.stsToken = credentials.securityToken;
}
checkCredentials(credentials);
Object.assign(this.options, credentials);
}
}
else {
this.stsTokenFreshTime = now;
}
return null;
}
exports.setSTSToken = setSTSToken;
function checkCredentials(obj) {
const stsTokenKey = ['accessKeySecret', 'accessKeyId', 'stsToken'];
const objKeys = Object.keys(obj);
stsTokenKey.forEach(_ => {
if (!objKeys.find(key => key === _)) {
throw Error(`refreshSTSToken must return contains ${_}`);
}
});
}
exports.checkCredentials = checkCredentials;