@nos-sdk/nos-node-sdk
Version:
NOS Node.js SDK实现了NOS对象操作接口,基于此SDK能方便快速地实现JavaScript应用程序来使用NOS的对象存储服务。
43 lines • 1.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const client_1 = require("../client");
const crypto_1 = require("crypto");
class NosClientAuthExt extends client_1.NosBaseClient {
/**
* 创建上传凭证,返回 Token 对象,里面有 `putPolicy` 和 `sign` 字段,前端可以通过此构建上传 Token
* @param params
*/
createToken(params) {
const putPolicyObject = {
Bucket: params.bucket || this.options.defaultBucket,
Object: params.objectKey,
Expires: Math.floor(params.expires / 1000),
ObjectSizeMin: params.objectSizeMin,
ObjectSizeMax: params.objectSizeMax,
MimeLimit: params.mimeLimit,
OverWrite: params.overwrite
};
if (putPolicyObject.MimeLimit && typeof putPolicyObject.MimeLimit !== 'string') {
putPolicyObject.MimeLimit = putPolicyObject.MimeLimit.join(';');
}
const putPolicyString = JSON.stringify(putPolicyObject);
const putPolicy = Buffer.from(putPolicyString, 'utf8').toString('base64');
const ciper = crypto_1.createHmac('sha256', this.options.accessSecret);
ciper.update(putPolicy, 'utf8');
const sign = ciper.digest('base64');
return {
putPolicy,
sign
};
}
/**
* 创建上传凭证字符串,对 `createToken` 的简单包装,直接返回 accessKey:sign:putPolicy 字符串
* @param params
*/
createTokenString(params) {
const { putPolicy, sign } = this.createToken(params);
return `${this.options.accessKey}:${sign}:${putPolicy}`;
}
}
exports.NosClientAuthExt = NosClientAuthExt;
//# sourceMappingURL=auth.js.map