You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.1 KiB
36 lines
1.1 KiB
1 month ago
|
const { policy2Str } = require('../utils/policy2Str');
|
||
|
const signHelper = require('../signUtils');
|
||
|
const { isObject } = require('../utils/isObject');
|
||
|
|
||
|
const proto = exports;
|
||
|
|
||
|
/**
|
||
|
* @param {Object or JSON} policy specifies the validity of the fields in the request.
|
||
|
* @return {Object} params
|
||
|
* {String} params.OSSAccessKeyId
|
||
|
* {String} params.Signature
|
||
|
* {String} params.policy JSON text encoded with UTF-8 and Base64.
|
||
|
*/
|
||
|
proto.calculatePostSignature = function calculatePostSignature(policy) {
|
||
|
if (!isObject(policy) && typeof policy !== 'string') {
|
||
|
throw new Error('policy must be JSON string or Object');
|
||
|
}
|
||
|
if (!isObject(policy)) {
|
||
|
try {
|
||
|
JSON.stringify(JSON.parse(policy));
|
||
|
} catch (error) {
|
||
|
throw new Error('policy must be JSON string or Object');
|
||
|
}
|
||
|
}
|
||
|
policy = Buffer.from(policy2Str(policy), 'utf8').toString('base64');
|
||
|
|
||
|
const Signature = signHelper.computeSignature(this.options.accessKeySecret, policy);
|
||
|
|
||
|
const query = {
|
||
|
OSSAccessKeyId: this.options.accessKeyId,
|
||
|
Signature,
|
||
|
policy
|
||
|
};
|
||
|
return query;
|
||
|
};
|