signatureUrl.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. const urlutil = require('url');
  2. const utility = require('utility');
  3. const copy = require('copy-to');
  4. const signHelper = require('../../common/signUtils');
  5. const { isIP } = require('../utils/isIP');
  6. const proto = exports;
  7. /**
  8. * signatureUrl
  9. * @deprecated will be deprecated in 7.x
  10. * @param {String} name object name
  11. * @param {Object} options options
  12. */
  13. proto.signatureUrl = function signatureUrl(name, options) {
  14. if (isIP(this.options.endpoint.hostname)) {
  15. throw new Error('can not get the object URL when endpoint is IP');
  16. }
  17. options = options || {};
  18. name = this._objectName(name);
  19. options.method = options.method || 'GET';
  20. const expires = utility.timestamp() + (options.expires || 1800);
  21. const params = {
  22. bucket: this.options.bucket,
  23. object: name
  24. };
  25. const resource = this._getResource(params);
  26. if (this.options.stsToken) {
  27. options['security-token'] = this.options.stsToken;
  28. }
  29. const signRes = signHelper._signatureForURL(this.options.accessKeySecret, options, resource, expires);
  30. const url = urlutil.parse(this._getReqUrl(params));
  31. url.query = {
  32. OSSAccessKeyId: this.options.accessKeyId,
  33. Expires: expires,
  34. Signature: signRes.Signature
  35. };
  36. copy(signRes.subResource).to(url.query);
  37. return url.format();
  38. };