|                                                    |  | const urlutil = require('url');const utility = require('utility');const copy = require('copy-to');const signHelper = require('../../common/signUtils');const { isIP } = require('../utils/isIP');
const proto = exports;
/** *  signatureUrl * @deprecated will be deprecated in 7.x * @param {String} name object name * @param {Object} options options * @param {boolean} [strictObjectNameValidation=true] the flag of verifying object name strictly */proto.signatureUrl = function signatureUrl(name, options, strictObjectNameValidation = true) {  if (isIP(this.options.endpoint.hostname)) {    throw new Error('can not get the object URL when endpoint is IP');  }
  if (strictObjectNameValidation && /^\?/.test(name)) {    throw new Error(`Invalid object name ${name}`);  }
  options = options || {};  name = this._objectName(name);  options.method = options.method || 'GET';  const expires = utility.timestamp() + (options.expires || 1800);  const params = {    bucket: this.options.bucket,    object: name  };
  const resource = this._getResource(params);
  if (this.options.stsToken) {    options['security-token'] = this.options.stsToken;  }
  const signRes = signHelper._signatureForURL(this.options.accessKeySecret, options, resource, expires);
  const url = urlutil.parse(this._getReqUrl(params));  url.query = {    OSSAccessKeyId: this.options.accessKeyId,    Expires: expires,    Signature: signRes.Signature  };
  copy(signRes.subResource).to(url.query);
  return url.format();};
 |