Comparing version 6.5.1 to 6.6.0
@@ -5,2 +5,24 @@ # Change Log | ||
<a name="6.6.0"></a> | ||
# [6.6.0](https://github.com/aliyun/oss-nodejs-sdk/compare/v6.5.0...v6.6.0) (2020-04-07) | ||
### Bug Fixes | ||
* _unSupportBrowserTip ([#755](https://github.com/aliyun/oss-nodejs-sdk/issues/755)) ([8ed3228](https://github.com/aliyun/oss-nodejs-sdk/commit/8ed3228)) | ||
* add successStatus ([#762](https://github.com/aliyun/oss-nodejs-sdk/issues/762)) ([0ef0fe2](https://github.com/aliyun/oss-nodejs-sdk/commit/0ef0fe2)) | ||
* checkBucketName bug ([#763](https://github.com/aliyun/oss-nodejs-sdk/issues/763)) ([0a3c64c](https://github.com/aliyun/oss-nodejs-sdk/commit/0a3c64c)) | ||
### Features | ||
* add CORS for server-side-encryption ([449f908](https://github.com/aliyun/oss-nodejs-sdk/commit/449f908)) | ||
* image processing ([#744](https://github.com/aliyun/oss-nodejs-sdk/issues/744)) ([02d59da](https://github.com/aliyun/oss-nodejs-sdk/commit/02d59da)), closes [#676](https://github.com/aliyun/oss-nodejs-sdk/issues/676) | ||
* putBucketWebsite support new parameter ([#736](https://github.com/aliyun/oss-nodejs-sdk/issues/736)) ([e1cb438](https://github.com/aliyun/oss-nodejs-sdk/commit/e1cb438)) | ||
* signatureUrl support trafficLimit ([#756](https://github.com/aliyun/oss-nodejs-sdk/issues/756)) ([a57315f](https://github.com/aliyun/oss-nodejs-sdk/commit/a57315f)) | ||
* support for the latest putBucketLifecycle api features ([#757](https://github.com/aliyun/oss-nodejs-sdk/issues/757)) ([17c2984](https://github.com/aliyun/oss-nodejs-sdk/commit/17c2984)) | ||
* **node:** bucket policy ([#751](https://github.com/aliyun/oss-nodejs-sdk/issues/751)) ([2d2b33a](https://github.com/aliyun/oss-nodejs-sdk/commit/2d2b33a)) | ||
<a name="6.5.0"></a> | ||
@@ -7,0 +29,0 @@ # [6.5.0](https://github.com/aliyun/oss-nodejs-sdk/compare/v6.4.0...v6.5.0) (2020-01-16) |
const assert = require('assert'); | ||
const _checkBucketName = require('../common/utils/checkBucketName'); | ||
@@ -65,3 +66,3 @@ const proto = exports; | ||
proto.useBucket = function useBucket(name) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
this.options.bucket = name; | ||
@@ -72,3 +73,3 @@ return this; | ||
proto.setBucket = function useBucket(name) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
this.options.bucket = name; | ||
@@ -82,12 +83,2 @@ return this; | ||
proto.putBucket = async function putBucket(name, options) { | ||
const params = this._bucketRequestParams('PUT', name, '', options); | ||
params.successStatuses = [200]; | ||
const result = await this.request(params); | ||
return { | ||
bucket: (result.headers.location && result.headers.location.substring(1)) || null, | ||
res: result.res | ||
}; | ||
}; | ||
proto.deleteBucket = async function deleteBucket(name, options) { | ||
@@ -175,115 +166,2 @@ const params = this._bucketRequestParams('DELETE', name, '', options); | ||
// website | ||
proto.putBucketWebsite = async function putBucketWebsite(name, config, options) { | ||
// config: index, [error] | ||
const params = this._bucketRequestParams('PUT', name, 'website', options); | ||
config = config || {}; | ||
config.index = config.index || 'index.html'; | ||
let xml = `${'<?xml version="1.0" encoding="UTF-8"?>\n<WebsiteConfiguration>\n' + | ||
' <IndexDocument><Suffix>'}${config.index}</Suffix></IndexDocument>\n`; | ||
if (config.error) { | ||
xml += `<ErrorDocument><Key>${config.error}</Key></ErrorDocument>\n`; | ||
} | ||
xml += '</WebsiteConfiguration>'; | ||
params.content = xml; | ||
params.mime = 'xml'; | ||
params.successStatuses = [200]; | ||
const result = await this.request(params); | ||
return { | ||
res: result.res | ||
}; | ||
}; | ||
proto.getBucketWebsite = async function getBucketWebsite(name, options) { | ||
const params = this._bucketRequestParams('GET', name, 'website', options); | ||
params.successStatuses = [200]; | ||
params.xmlResponse = true; | ||
const result = await this.request(params); | ||
return { | ||
index: result.data.IndexDocument.Suffix, | ||
error: (result.data.ErrorDocument && result.data.ErrorDocument.Key) || null, | ||
res: result.res | ||
}; | ||
}; | ||
proto.deleteBucketWebsite = async function deleteBucketWebsite(name, options) { | ||
const params = this._bucketRequestParams('DELETE', name, 'website', options); | ||
params.successStatuses = [204]; | ||
const result = await this.request(params); | ||
return { | ||
res: result.res | ||
}; | ||
}; | ||
// lifecycle | ||
proto.putBucketLifecycle = async function putBucketLifecycle(name, rules, options) { | ||
// rules: [rule, ...] | ||
// rule: [id], prefix, status, expiration, [days or date] | ||
// status: 'Enabled' or 'Disabled' | ||
const params = this._bucketRequestParams('PUT', name, 'lifecycle', options); | ||
let xml = '<?xml version="1.0" encoding="UTF-8"?>\n<LifecycleConfiguration>\n'; | ||
for (let i = 0; i < rules.length; i++) { | ||
const rule = rules[i]; | ||
const expiration = rule.days ? | ||
`<Days>${rule.days}</Days>` | ||
: | ||
`<Date>${rule.date}</Date>`; | ||
const id = rule.id ? `<ID>${rule.id}</ID>\n` : ''; | ||
xml += ` <Rule>\n${id | ||
} <Prefix>${rule.prefix}</Prefix>\n` + | ||
` <Status>${rule.status}</Status>\n` + | ||
` <Expiration>${expiration}</Expiration>\n` + | ||
' </Rule>\n'; | ||
} | ||
xml += '</LifecycleConfiguration>'; | ||
params.content = xml; | ||
params.mime = 'xml'; | ||
params.successStatuses = [200]; | ||
const result = await this.request(params); | ||
return { | ||
res: result.res | ||
}; | ||
}; | ||
proto.getBucketLifecycle = async function getBucketLifecycle(name, options) { | ||
const params = this._bucketRequestParams('GET', name, 'lifecycle', options); | ||
params.successStatuses = [200]; | ||
params.xmlResponse = true; | ||
const result = await this.request(params); | ||
let rules = result.data.Rule || null; | ||
if (rules) { | ||
if (!isArray(rules)) { | ||
rules = [rules]; | ||
} | ||
rules = rules.map((rule) => { | ||
const item = { | ||
id: rule.ID, | ||
prefix: rule.Prefix, | ||
status: rule.Status | ||
}; | ||
if (rule.Expiration.Days) { | ||
item.days = rule.Expiration.Days; | ||
} else { | ||
item.date = rule.Expiration.Date; | ||
} | ||
return item; | ||
}); | ||
} | ||
return { | ||
rules, | ||
res: result.res | ||
}; | ||
}; | ||
proto.deleteBucketLifecycle = async function deleteBucketLifecycle(name, options) { | ||
const params = this._bucketRequestParams('DELETE', name, 'lifecycle', options); | ||
params.successStatuses = [204]; | ||
const result = await this.request(params); | ||
return { | ||
res: result.res | ||
}; | ||
}; | ||
proto.putBucketCORS = async function putBucketCORS(name, rules, options) { | ||
@@ -290,0 +168,0 @@ rules = rules || []; |
@@ -19,3 +19,2 @@ const debug = require('debug')('ali-oss'); | ||
const _isIP = require('../common/utils/isIP'); | ||
const _checkBucketName = require('../common/utils/checkBucketName'); | ||
const _initOptions = require('../common/client/initOptions'); | ||
@@ -31,3 +30,3 @@ | ||
const { name, version } = platform; | ||
if (name.toLowerCase() === 'ie' && version.split('.')[0] < 10) { | ||
if (name && name.toLowerCase && name.toLowerCase() === 'ie' && version.split('.')[0] < 10) { | ||
// eslint-disable-next-line no-console | ||
@@ -104,15 +103,13 @@ console.warn('ali-oss does not support the current browser'); | ||
merge(proto, require('./object')); | ||
// /** | ||
// * Bucket operations | ||
// */ | ||
/** | ||
* check Bucket Name | ||
* Bucket operations | ||
*/ | ||
merge(proto, require('../common/bucket/getBucketWebsite')); | ||
merge(proto, require('../common/bucket/putBucketWebsite')); | ||
merge(proto, require('../common/bucket/deleteBucketWebsite')); | ||
proto._checkBucketName = function (name) { | ||
if (!_checkBucketName(name)) { | ||
throw new Error('The bucket must be conform to the specifications'); | ||
} | ||
}; | ||
// merge(proto, require('./bucket')); | ||
// lifecycle | ||
merge(proto, require('../common/bucket/getBucketLifecycle')); | ||
merge(proto, require('../common/bucket/putBucketLifecycle')); | ||
merge(proto, require('../common/bucket/deleteBucketLifecycle')); | ||
@@ -119,0 +116,0 @@ |
@@ -281,2 +281,3 @@ | ||
merge(proto, require('../common/object/deleteObjectTagging')); | ||
merge(proto, require('../common/image')); | ||
@@ -283,0 +284,0 @@ proto.putMeta = async function putMeta(name, meta, options) { |
@@ -1,1 +0,1 @@ | ||
exports.version="6.5.0" | ||
exports.version="6.6.0" |
const assert = require('assert'); | ||
const _checkBucketName = require('./common/utils/checkBucketName'); | ||
const isArray = require('./common/utils/isArray'); | ||
const _checkBucketName = require('../lib/common/utils/checkBucketName'); | ||
@@ -9,7 +10,2 @@ const proto = exports; | ||
function isArray(arr) { | ||
if (Array.isArray) return Array.isArray(arr); | ||
return Object.prototype.toString.call(arr) === '[object Array]'; | ||
} | ||
function toArray(obj) { | ||
@@ -22,12 +18,2 @@ if (!obj) return []; | ||
/** | ||
* check Bucket Name | ||
*/ | ||
proto._checkBucketName = function (name) { | ||
if (!_checkBucketName(name)) { | ||
throw new Error('The bucket must be conform to the specifications'); | ||
} | ||
}; | ||
/** | ||
* Bucket opertaions | ||
@@ -78,3 +64,3 @@ */ | ||
proto.useBucket = function useBucket(name) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
return this.setBucket(name); | ||
@@ -84,3 +70,3 @@ }; | ||
proto.setBucket = function useBucket(name) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
this.options.bucket = name; | ||
@@ -95,3 +81,3 @@ return this; | ||
proto.getBucketLocation = async function getBucketLocation(name, options) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
name = name || this.getBucket(); | ||
@@ -109,3 +95,3 @@ const params = this._bucketRequestParams('GET', name, 'location', options); | ||
proto.getBucketInfo = async function getBucketInfo(name, options) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
name = name || this.getBucket(); | ||
@@ -122,36 +108,4 @@ const params = this._bucketRequestParams('GET', name, 'bucketInfo', options); | ||
proto.putBucket = async function putBucket(name, options) { | ||
this._checkBucketName(name); | ||
options = options || {}; | ||
const params = this._bucketRequestParams('PUT', name, '', options); | ||
const startTag = '<?xml version="1.0" encoding="UTF-8"?>\n<CreateBucketConfiguration>'; | ||
const endTag = '</CreateBucketConfiguration>'; | ||
let paramlXML = ''; | ||
// server not support | ||
// if (region) { | ||
// paramlXML += `<LocationConstraint>${region}</LocationConstraint>`; | ||
// params.content = `${startTag}${paramlXML}${endTag}`; | ||
// } | ||
if (options.StorageClass) { | ||
paramlXML += `<StorageClass>${options.StorageClass}</StorageClass>`; | ||
} | ||
if (paramlXML) { | ||
params.mime = 'xml'; | ||
params.content = `${startTag}${paramlXML}${endTag}`; | ||
} | ||
params.successStatuses = [200]; | ||
const result = await this.request(params); | ||
return { | ||
bucket: (result.headers.location && result.headers.location.substring(1)) || null, | ||
res: result.res | ||
}; | ||
}; | ||
proto.deleteBucket = async function deleteBucket(name, options) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
const params = this._bucketRequestParams('DELETE', name, '', options); | ||
@@ -170,3 +124,3 @@ const result = await this.request(params); | ||
proto.putBucketACL = async function putBucketACL(name, acl, options) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
const params = this._bucketRequestParams('PUT', name, 'acl', options); | ||
@@ -185,3 +139,3 @@ params.headers = { | ||
proto.getBucketACL = async function getBucketACL(name, options) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
const params = this._bucketRequestParams('GET', name, 'acl', options); | ||
@@ -204,3 +158,3 @@ params.successStatuses = [200]; | ||
proto.putBucketLogging = async function putBucketLogging(name, prefix, options) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
const params = this._bucketRequestParams('PUT', name, 'logging', options); | ||
@@ -223,3 +177,3 @@ let xml = `${'<?xml version="1.0" encoding="UTF-8"?>\n<BucketLoggingStatus>\n' + | ||
proto.getBucketLogging = async function getBucketLogging(name, options) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
const params = this._bucketRequestParams('GET', name, 'logging', options); | ||
@@ -238,3 +192,3 @@ params.successStatuses = [200]; | ||
proto.deleteBucketLogging = async function deleteBucketLogging(name, options) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
const params = this._bucketRequestParams('DELETE', name, 'logging', options); | ||
@@ -248,123 +202,4 @@ params.successStatuses = [204, 200]; | ||
// website | ||
proto.putBucketWebsite = async function putBucketWebsite(name, config, options) { | ||
this._checkBucketName(name); | ||
// config: index, [error] | ||
const params = this._bucketRequestParams('PUT', name, 'website', options); | ||
config = config || {}; | ||
config.index = config.index || 'index.html'; | ||
let xml = `${'<?xml version="1.0" encoding="UTF-8"?>\n<WebsiteConfiguration>\n' + | ||
' <IndexDocument><Suffix>'}${config.index}</Suffix></IndexDocument>\n`; | ||
if (config.error) { | ||
xml += `<ErrorDocument><Key>${config.error}</Key></ErrorDocument>\n`; | ||
} | ||
xml += '</WebsiteConfiguration>'; | ||
params.content = xml; | ||
params.mime = 'xml'; | ||
params.successStatuses = [200]; | ||
const result = await this.request(params); | ||
return { | ||
res: result.res | ||
}; | ||
}; | ||
proto.getBucketWebsite = async function getBucketWebsite(name, options) { | ||
this._checkBucketName(name); | ||
const params = this._bucketRequestParams('GET', name, 'website', options); | ||
params.successStatuses = [200]; | ||
params.xmlResponse = true; | ||
const result = await this.request(params); | ||
return { | ||
index: result.data.IndexDocument.Suffix, | ||
error: (result.data.ErrorDocument && result.data.ErrorDocument.Key) || null, | ||
res: result.res | ||
}; | ||
}; | ||
proto.deleteBucketWebsite = async function deleteBucketWebsite(name, options) { | ||
this._checkBucketName(name); | ||
const params = this._bucketRequestParams('DELETE', name, 'website', options); | ||
params.successStatuses = [204]; | ||
const result = await this.request(params); | ||
return { | ||
res: result.res | ||
}; | ||
}; | ||
// lifecycle | ||
proto.putBucketLifecycle = async function putBucketLifecycle(name, rules, options) { | ||
this._checkBucketName(name); | ||
// rules: [rule, ...] | ||
// rule: [id], prefix, status, expiration, [days or date] | ||
// status: 'Enabled' or 'Disabled' | ||
const params = this._bucketRequestParams('PUT', name, 'lifecycle', options); | ||
let xml = '<?xml version="1.0" encoding="UTF-8"?>\n<LifecycleConfiguration>\n'; | ||
for (let i = 0; i < rules.length; i++) { | ||
const rule = rules[i]; | ||
const expiration = rule.days ? | ||
`<Days>${rule.days}</Days>` | ||
: | ||
`<Date>${rule.date}</Date>`; | ||
const id = rule.id ? `<ID>${rule.id}</ID>\n` : ''; | ||
xml += ` <Rule>\n${id | ||
} <Prefix>${rule.prefix}</Prefix>\n` + | ||
` <Status>${rule.status}</Status>\n` + | ||
` <Expiration>${expiration}</Expiration>\n` + | ||
' </Rule>\n'; | ||
} | ||
xml += '</LifecycleConfiguration>'; | ||
params.content = xml; | ||
params.mime = 'xml'; | ||
params.successStatuses = [200]; | ||
const result = await this.request(params); | ||
return { | ||
res: result.res | ||
}; | ||
}; | ||
proto.getBucketLifecycle = async function getBucketLifecycle(name, options) { | ||
this._checkBucketName(name); | ||
const params = this._bucketRequestParams('GET', name, 'lifecycle', options); | ||
params.successStatuses = [200]; | ||
params.xmlResponse = true; | ||
const result = await this.request(params); | ||
let rules = result.data.Rule || null; | ||
if (rules) { | ||
if (!isArray(rules)) { | ||
rules = [rules]; | ||
} | ||
rules = rules.map((rule) => { | ||
const item = { | ||
id: rule.ID, | ||
prefix: rule.Prefix, | ||
status: rule.Status | ||
}; | ||
if (rule.Expiration.Days) { | ||
item.days = rule.Expiration.Days; | ||
} else { | ||
item.date = rule.Expiration.Date; | ||
} | ||
return item; | ||
}); | ||
} | ||
return { | ||
rules, | ||
res: result.res | ||
}; | ||
}; | ||
proto.deleteBucketLifecycle = async function deleteBucketLifecycle(name, options) { | ||
this._checkBucketName(name); | ||
const params = this._bucketRequestParams('DELETE', name, 'lifecycle', options); | ||
params.successStatuses = [204]; | ||
const result = await this.request(params); | ||
return { | ||
res: result.res | ||
}; | ||
}; | ||
proto.putBucketCORS = async function putBucketCORS(name, rules, options) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
rules = rules || []; | ||
@@ -415,3 +250,3 @@ assert(rules.length, 'rules is required'); | ||
proto.getBucketCORS = async function getBucketCORS(name, options) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
const params = this._bucketRequestParams('GET', name, 'cors', options); | ||
@@ -440,3 +275,3 @@ params.successStatuses = [200]; | ||
proto.deleteBucketCORS = async function deleteBucketCORS(name, options) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
const params = this._bucketRequestParams('DELETE', name, 'cors', options); | ||
@@ -453,3 +288,3 @@ params.successStatuses = [204]; | ||
proto.putBucketReferer = async function putBucketReferer(name, allowEmpty, referers, options) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
const params = this._bucketRequestParams('PUT', name, 'referer', options); | ||
@@ -478,3 +313,3 @@ let xml = '<?xml version="1.0" encoding="UTF-8"?>\n<RefererConfiguration>\n'; | ||
proto.getBucketReferer = async function getBucketReferer(name, options) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
const params = this._bucketRequestParams('GET', name, 'referer', options); | ||
@@ -498,3 +333,3 @@ params.successStatuses = [200]; | ||
proto.deleteBucketReferer = async function deleteBucketReferer(name, options) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
return await this.putBucketReferer(name, true, null, options); | ||
@@ -501,0 +336,0 @@ }; |
@@ -76,2 +76,3 @@ | ||
merge(proto, require('./object')); | ||
merge(proto, require('./common/image')); | ||
/** | ||
@@ -78,0 +79,0 @@ * Bucket operations |
@@ -0,1 +1,3 @@ | ||
const _checkBucketName = require('../utils/checkBucketName'); | ||
const proto = exports; | ||
@@ -9,3 +11,3 @@ // const jstoxml = require('jstoxml'); | ||
proto.deleteBucketEncryption = async function deleteBucketEncryption(bucketName) { | ||
this._checkBucketName(bucketName); | ||
_checkBucketName(bucketName); | ||
const params = this._bucketRequestParams('DELETE', bucketName, 'encryption'); | ||
@@ -12,0 +14,0 @@ params.successStatuses = [204]; |
@@ -0,1 +1,3 @@ | ||
const _checkBucketName = require('../utils/checkBucketName'); | ||
const proto = exports; | ||
@@ -9,3 +11,3 @@ /** | ||
proto.deleteBucketTags = async function deleteBucketTags(name, options = {}) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
@@ -12,0 +14,0 @@ const params = this._bucketRequestParams('DELETE', name, 'tagging', options); |
@@ -0,1 +1,3 @@ | ||
const _checkBucketName = require('../utils/checkBucketName'); | ||
const proto = exports; | ||
@@ -8,3 +10,3 @@ /** | ||
proto.getBucketEncryption = async function getBucketEncryption(bucketName) { | ||
this._checkBucketName(bucketName); | ||
_checkBucketName(bucketName); | ||
const params = this._bucketRequestParams('GET', bucketName, 'encryption'); | ||
@@ -11,0 +13,0 @@ params.successStatuses = [200]; |
@@ -0,1 +1,3 @@ | ||
const _checkBucketName = require('../utils/checkBucketName'); | ||
const proto = exports; | ||
@@ -11,3 +13,3 @@ /** | ||
this._checkBucketName(bucketName); | ||
_checkBucketName(bucketName); | ||
const params = this._bucketRequestParams('GET', bucketName, 'requestPayment', options); | ||
@@ -14,0 +16,0 @@ params.successStatuses = [200]; |
const proto = exports; | ||
const _checkBucketName = require('../utils/checkBucketName'); | ||
const isObject = require('../utils/isObject'); | ||
@@ -11,3 +12,3 @@ /** | ||
proto.getBucketTags = async function getBucketTags(name, options = {}) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
const params = this._bucketRequestParams('GET', name, 'tagging', options); | ||
@@ -14,0 +15,0 @@ params.successStatuses = [200]; |
@@ -13,1 +13,11 @@ const merge = require('merge-descriptors'); | ||
merge(proto, require('./deleteBucketTags')); | ||
merge(proto, require('./putBucket')); | ||
merge(proto, require('./getBucketWebsite')); | ||
merge(proto, require('./putBucketWebsite')); | ||
merge(proto, require('./deleteBucketWebsite')); | ||
merge(proto, require('./getBucketLifecycle')); | ||
merge(proto, require('./putBucketLifecycle')); | ||
merge(proto, require('./deleteBucketLifecycle')); | ||
merge(proto, require('./getBucketPolicy')); | ||
merge(proto, require('./putBucketPolicy')); | ||
merge(proto, require('./deleteBucketPolicy')); |
const proto = exports; | ||
// const jstoxml = require('jstoxml'); | ||
const _checkBucketName = require('../utils/checkBucketName'); | ||
const obj2xml = require('../utils/obj2xml'); | ||
@@ -12,3 +13,3 @@ /** | ||
options = options || {}; | ||
this._checkBucketName(bucketName); | ||
_checkBucketName(bucketName); | ||
const params = this._bucketRequestParams('PUT', bucketName, 'encryption', options); | ||
@@ -15,0 +16,0 @@ params.successStatuses = [200]; |
@@ -0,1 +1,2 @@ | ||
const _checkBucketName = require('../utils/checkBucketName'); | ||
const obj2xml = require('../utils/obj2xml'); | ||
@@ -22,3 +23,3 @@ | ||
this._checkBucketName(bucketName); | ||
_checkBucketName(bucketName); | ||
const params = this._bucketRequestParams( | ||
@@ -25,0 +26,0 @@ 'PUT', |
@@ -0,1 +1,2 @@ | ||
const _checkBucketName = require('../utils/checkBucketName'); | ||
const obj2xml = require('../utils/obj2xml'); | ||
@@ -13,3 +14,3 @@ const checkTag = require('../utils/checkBucketTag'); | ||
proto.putBucketTags = async function putBucketTags(name, tag, options = {}) { | ||
this._checkBucketName(name); | ||
_checkBucketName(name); | ||
checkTag(tag); | ||
@@ -16,0 +17,0 @@ const params = this._bucketRequestParams('PUT', name, 'tagging', options); |
@@ -38,4 +38,4 @@ const ms = require('humanize-ms'); | ||
} | ||
if (options.bucket && !_checkBucketName(options.bucket)) { | ||
throw new Error('The bucket must be conform to the specifications'); | ||
if (options.bucket) { | ||
_checkBucketName(options.bucket); | ||
} | ||
@@ -42,0 +42,0 @@ const opts = Object.assign({ |
const policy2Str = require('../utils/policy2Str'); | ||
const signHelper = require('../signUtils'); | ||
const isObject = require('../utils/isObject'); | ||
@@ -15,5 +16,12 @@ const proto = exports; | ||
proto.calculatePostSignature = function calculatePostSignature(policy) { | ||
if (!policy) { | ||
throw new Error('policy must be JSON or Object'); | ||
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'); | ||
@@ -20,0 +28,0 @@ |
@@ -0,1 +1,3 @@ | ||
const _checkBucketName = require('../utils/checkBucketName'); | ||
const proto = exports; | ||
@@ -53,3 +55,3 @@ | ||
this._checkBucketName(bucketName); | ||
_checkBucketName(bucketName); | ||
@@ -56,0 +58,0 @@ sourceName = `/${bucketName}/${encodeURIComponent(sourceName)}`; |
@@ -115,2 +115,7 @@ | ||
if (options.trafficLimit) { | ||
const trafficLimitKey = 'x-oss-traffic-limit'; | ||
subResource[trafficLimitKey] = options.trafficLimit; | ||
} | ||
if (options.response) { | ||
@@ -132,3 +137,3 @@ Object.keys(options.response).forEach((k) => { | ||
headers[key] = value; | ||
} else if (lowerKey !== 'expires' && lowerKey !== 'response' && lowerKey !== 'process' && lowerKey !== 'method') { | ||
} else if (lowerKey !== 'expires' && lowerKey !== 'response' && lowerKey !== 'process' && lowerKey !== 'method' && lowerKey !== 'trafficlimit') { | ||
subResource[lowerKey] = value; | ||
@@ -135,0 +140,0 @@ } |
@@ -5,6 +5,7 @@ /** | ||
module.exports = function (name) { | ||
const bucketRegex = /^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$/; | ||
const checkBucket = bucketRegex.test(name); | ||
return checkBucket; | ||
module.exports = function (name, createBucket) { | ||
const bucketRegex = createBucket ? /^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$/ : /^[a-z0-9_][a-z0-9-_]{1,61}[a-z0-9_]$/; | ||
if (!bucketRegex.test(name)) { | ||
throw new Error('The bucket must be conform to the specifications'); | ||
} | ||
}; |
@@ -0,1 +1,3 @@ | ||
const formatObjKey = require('./formatObjKey'); | ||
function type(params) { | ||
@@ -13,2 +15,5 @@ return Object.prototype.toString | ||
} | ||
if (options && options.firstUpperCase) { | ||
obj = formatObjKey(obj, 'firstUpperCase'); | ||
} | ||
if (type(obj) === 'object') { | ||
@@ -15,0 +20,0 @@ Object.keys(obj).forEach((key) => { |
{ | ||
"name": "ali-oss", | ||
"version": "6.5.1", | ||
"version": "6.6.0", | ||
"description": "aliyun oss(object storage service) node client", | ||
@@ -123,2 +123,3 @@ "main": "lib/client.js", | ||
"is-type-of": "^1.0.0", | ||
"js-base64": "^2.5.2", | ||
"jstoxml": "^0.2.3", | ||
@@ -138,3 +139,3 @@ "merge-descriptors": "^1.0.1", | ||
"lint-staged": { | ||
"*": [ | ||
"**/!(dist)/*": [ | ||
"npm run detect-secrets --" | ||
@@ -141,0 +142,0 @@ ] |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 3 instances in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
76
3635
1844096
25
35718
15
19
+ Addedjs-base64@^2.5.2
+ Addedjs-base64@2.6.4(transitive)