UNPKG

ali-oss

Version:

aliyun oss(object storage service) node client

71 lines (58 loc) 1.84 kB
const ms = require('humanize-ms'); const urlutil = require('url'); const _checkBucketName = require('../utils/checkBucketName'); function setEndpoint(endpoint, secure) { let url = urlutil.parse(endpoint); if (!url.protocol) { url = urlutil.parse(`http${secure ? 's' : ''}://${endpoint}`); } if (url.protocol !== 'http:' && url.protocol !== 'https:') { throw new Error('Endpoint protocol must be http or https.'); } return url; } function setRegion(region, internal, secure) { const protocol = secure ? 'https://' : 'http://'; let suffix = internal ? '-internal.aliyuncs.com' : '.aliyuncs.com'; const prefix = 'vpc100-oss-cn-'; // aliyun VPC region: https://help.aliyun.com/knowledge_detail/38740.html if (region.substr(0, prefix.length) === prefix) { suffix = '.aliyuncs.com'; } return urlutil.parse(protocol + region + suffix); } module.exports = function (options) { if (!options || !options.accessKeyId || !options.accessKeySecret) { throw new Error('require accessKeyId, accessKeySecret'); } if (options.bucket) { _checkBucketName(options.bucket); } const opts = Object.assign({ region: 'oss-cn-hangzhou', internal: false, secure: false, timeout: 60000, bucket: null, endpoint: null, cname: false, isRequestPay: false, sldEnable: false }, options); opts.accessKeyId = opts.accessKeyId.trim(); opts.accessKeySecret = opts.accessKeySecret.trim(); if (opts.timeout) { opts.timeout = ms(opts.timeout); } if (opts.endpoint) { opts.endpoint = setEndpoint(opts.endpoint, opts.secure); } else if (opts.region) { opts.endpoint = setRegion(opts.region, opts.internal, opts.secure); } else { throw new Error('require options.endpoint or options.region'); } opts.inited = true; return opts; };