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; };