36 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
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;
 | 
						|
};
 |