New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

cos-nodejs-sdk-v5

Package Overview
Dependencies
Maintainers
3
Versions
167
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cos-nodejs-sdk-v5 - npm Package Compare versions

Comparing version 2.2.6 to 2.3.0

76

demo/demo.js

@@ -7,2 +7,4 @@ var fs = require('fs');

var cos = new COS({

@@ -138,3 +140,3 @@ // 必选参数

"AllowedHeader": ["*"],
"ExposeHeader": ["ETag"],
"ExposeHeader": ["ETag", "x-cos-acl", "x-cos-version-id", "x-cos-delete-marker", "x-cos-server-side-encryption"],
"MaxAgeSeconds": "5"

@@ -258,8 +260,8 @@ }]

'Filter': {
'Prefix': 'test123',
'Prefix': 'cas',
},
'Status': 'Enabled',
'Transition': {
'Date': '2016-10-31T00:00:00+08:00',
'StorageClass': 'STANDARD_IA'
'Days': 0,
'StorageClass': 'ARCHIVE'
}

@@ -313,2 +315,12 @@ }]

function listObjectVersions() {
cos.listObjectVersions({
Bucket: config.Bucket, // Bucket 格式:test-1250000000
Region: config.Region,
Prefix: "1mb.zip"
}, function (err, data) {
console.log(err || JSON.stringify(data, null, ' '));
});
}
function putBucketReplication() {

@@ -510,2 +522,18 @@ var AppId = config.Bucket.substr(config.Bucket.lastIndexOf('-') + 1);

function restoreObject() {
cos.restoreObject({
Bucket: config.Bucket, // Bucket 格式:test-1250000000
Region: config.Region,
Key: '1.txt',
RestoreRequest: {
Days: 1,
CASJobParameters: {
Tier: 'Expedited'
}
}
}, function (err, data) {
console.log(err || data);
});
}
function abortUploadTask() {

@@ -540,2 +568,5 @@ cos.abortUploadTask({

FilePath: filepath, /* 必须 */
Headers: {
'test': '123',
},
TaskReady: function (tid) {

@@ -572,2 +603,36 @@ TaskId = tid;

function uploadFiles() {
var filename = 'mb.zip';
var blob = util.createFile({size: 1024 * 1024 * 10});
cos.uploadFiles({
files: [{
Bucket: config.Bucket, // Bucket 格式:test-1250000000
Region: config.Region,
Key: '1' + filename,
Body: blob,
}, {
Bucket: config.Bucket, // Bucket 格式:test-1250000000
Region: config.Region,
Key: '2' + filename,
Body: blob,
}, {
Bucket: config.Bucket, // Bucket 格式:test-1250000000
Region: config.Region,
Key: '3' + filename,
Body: blob,
}],
SliceSize: 1024 * 1024,
onProgress: function (info) {
var percent = parseInt(info.percent * 10000) / 100;
var speed = parseInt(info.speed / 1024 / 1024 * 100) / 100;
console.log('进度:' + percent + '%; 速度:' + speed + 'Mb/s;');
},
onFileFinish: function (err, data, options) {
console.log(options.Key + ' 上传' + (err ? '失败' : '完成'));
},
}, function (err, data) {
console.log(err || data);
});
}
getService();

@@ -594,2 +659,3 @@ // getAuth();

// getBucketVersioning();
// listObjectVersions();
// putBucketVersioning();

@@ -608,2 +674,3 @@ // getBucketReplication();

// deleteMultipleObject();
// restoreObject();
// abortUploadTask();

@@ -614,1 +681,2 @@ // sliceUploadFile();

// restartTask();
// uploadFiles();

2

package.json
{
"name": "cos-nodejs-sdk-v5",
"version": "2.2.6",
"version": "2.3.0",
"description": "cos nodejs sdk v5",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -17,2 +17,3 @@ var fs = require('fs');

var StorageClass = params.StorageClass || 'Standard';
var ServerSideEncryption = params.ServerSideEncryption;
var FileSize;

@@ -63,2 +64,3 @@ var self = this;

AsyncLimit: AsyncLimit,
ServerSideEncryption: ServerSideEncryption,
UploadData: UploadData,

@@ -84,2 +86,3 @@ onProgress: onProgress

Key: Key,
Headers: params.Headers,
StorageClass: StorageClass,

@@ -212,3 +215,3 @@ FilePath: FilePath,

// 不存在 UploadId
// 存在 UploadId
ep.on('upload_id_ready', function (UploadData) {

@@ -247,2 +250,3 @@ // 转换成 map

Key: Key,
Headers: params.Headers,
StorageClass: StorageClass,

@@ -401,2 +405,3 @@ });

var FinishSize = 0;
var ServerSideEncryption = params.ServerSideEncryption;
var needUploadSlices = util.filter(UploadData.PartList, function (SliceItem) {

@@ -424,2 +429,3 @@ if (SliceItem['Uploaded']) {

PartNumber: PartNumber,
ServerSideEncryption: ServerSideEncryption,
FilePath: FilePath,

@@ -466,2 +472,3 @@ UploadData: UploadData,

var SliceSize = params.SliceSize;
var ServerSideEncryption = params.ServerSideEncryption;
var UploadData = params.UploadData;

@@ -496,2 +503,3 @@ var sliceRetryTimes = 3;

UploadId: UploadData.UploadId,
ServerSideEncryption: ServerSideEncryption,
Body: Body,

@@ -572,2 +580,3 @@ onProgress: params.onProgress

Key: Key,
Headers: params.Headers,
AsyncLimit: AsyncLimit,

@@ -645,2 +654,3 @@ AbortArray: AbortArray

Key: AbortItem.Key,
Headers: params.Headers,
UploadId: UploadId

@@ -686,5 +696,92 @@ }, function (err, data) {

// 批量上传文件
function uploadFiles(params, callback) {
var self = this;
// 判断多大的文件使用分片上传
var SliceSize = params.SliceSize === undefined ? self.options.SliceSize : params.SliceSize;
// 汇总返回进度
var TotalSize = 0;
var TotalFinish = 0;
var onTotalProgress = util.throttleOnProgress.call(self, TotalFinish, params.onProgress);
// 汇总返回回调
var unFinishCount = params.files.length;
var _onTotalFileFinish = params.onFileFinish;
var resultList = Array(unFinishCount);
var onTotalFileFinish = function (err, data, options) {
onTotalProgress(null, true);
_onTotalFileFinish && _onTotalFileFinish(err, data, options);
resultList[options.Index] = {
options: options,
error: err,
data: data
};
if (--unFinishCount <= 0 && callback) {
callback(null, {
files: resultList,
});
}
};
// 开始处理每个文件
var taskList = [];
util.each(params.files, function (fileParams, index) {
var Body = fileParams.Body;
var FileSize = Body.size || Body.length || 0;
var fileInfo = {Index: index, TaskId: ''};
// 更新文件总大小
TotalSize += FileSize;
// 整理 option,用于返回给回调
util.each(fileParams, function (v, k) {
if (typeof v !== 'object' && typeof v !== 'function') {
fileInfo[k] = v;
}
});
// 处理单个文件 TaskReady
var _TaskReady = fileParams.TaskReady;
var TaskReady = function (tid) {
fileInfo.TaskId = tid;
_TaskReady && _TaskReady(tid);
};
fileParams.TaskReady = TaskReady;
// 处理单个文件进度
var PreAddSize = 0;
var _onProgress = fileParams.onProgress;
var onProgress = function (info) {
TotalFinish = TotalFinish - PreAddSize + info.loaded;
PreAddSize = info.loaded;
_onProgress && _onProgress(info);
onTotalProgress({loaded: TotalFinish, total: TotalSize});
};
fileParams.onProgress = onProgress;
// 处理单个文件完成
var _onFileFinish = fileParams.onFileFinish;
var onFileFinish = function (err, data) {
_onFileFinish && _onFileFinish(err, data);
onTotalFileFinish && onTotalFileFinish(err, data, fileInfo);
};
// 添加上传任务
taskList.push({
api: FileSize >= SliceSize ? 'sliceUploadFile' : 'putObject',
params: fileParams,
callback: onFileFinish,
});
});
self._addTasks(taskList);
}
var API_MAP = {
sliceUploadFile: sliceUploadFile,
abortUploadTask: abortUploadTask,
uploadFiles: uploadFiles,
};

@@ -691,0 +788,0 @@

@@ -21,2 +21,3 @@ 'use strict';

ServiceDomain: '',
SliceSize: 1024 * 1024 * 20,
Proxy: '',

@@ -23,0 +24,0 @@ };

@@ -219,3 +219,3 @@ 'use strict';

var object = params.Key;
if (apiName.indexOf('Bucket') > -1 || apiName === 'deleteMultipleObject' || apiName === 'multipartList') {
if (apiName.indexOf('Bucket') > -1 || apiName === 'deleteMultipleObject' || apiName === 'multipartList' || apiName === 'listObjectVersions' || apiName === 'request') {
return bucket && region;

@@ -237,8 +237,69 @@ }

return function (params, callback) {
callback = callback || function () {
// 处理参数
if (typeof params === 'function') {
callback = params;
params = {};
}
// 统一处理 Headers
var Headers = params.Headers || {};
if (params && typeof params === 'object') {
(function () {
for (var key in params) {
if (params.hasOwnProperty(key) && key.indexOf('x-cos-') > -1) {
Headers[key] = params[key];
}
}
})();
// params headers
Headers['x-cos-mfa'] = params['MFA'];
Headers['Content-MD5'] = params['ContentMD5'];
Headers['Content-Length'] = params['ContentLength'];
Headers['Content-Type'] = params['ContentType'];
Headers['Expect'] = params['Expect'];
Headers['Expires'] = params['Expires'];
Headers['Cache-Control'] = params['CacheControl'];
Headers['Content-Disposition'] = params['ContentDisposition'];
Headers['Content-Encoding'] = params['ContentEncoding'];
Headers['Range'] = params['Range'];
Headers['If-Modified-Since'] = params['IfModifiedSince'];
Headers['If-Unmodified-Since'] = params['IfUnmodifiedSince'];
Headers['If-Match'] = params['IfMatch'];
Headers['If-None-Match'] = params['IfNoneMatch'];
Headers['x-cos-copy-source'] = params['CopySource'];
Headers['x-cos-copy-source-Range'] = params['CopySourceRange'];
Headers['x-cos-metadata-directive'] = params['MetadataDirective'];
Headers['x-cos-copy-source-If-Modified-Since'] = params['CopySourceIfModifiedSince'];
Headers['x-cos-copy-source-If-Unmodified-Since'] = params['CopySourceIfUnmodifiedSince'];
Headers['x-cos-copy-source-If-Match'] = params['CopySourceIfMatch'];
Headers['x-cos-copy-source-If-None-Match'] = params['CopySourceIfNoneMatch'];
Headers['x-cos-server-side-encryption'] = params['ServerSideEncryption'];
Headers['x-cos-acl'] = params['ACL'];
Headers['x-cos-grant-read'] = params['GrantRead'];
Headers['x-cos-grant-write'] = params['GrantWrite'];
Headers['x-cos-grant-full-control'] = params['GrantFullControl'];
Headers['x-cos-grant-read-acp'] = params['GrantReadAcp'];
Headers['x-cos-grant-write-acp'] = params['GrantWriteAcp'];
Headers['x-cos-storage-class'] = params['StorageClass'];
params.Headers = Headers;
}
// 代理回调函数
var formatResult = function (result) {
if (result && result.headers) {
result.headers['x-cos-version-id'] && (result.VersionId = result.headers['x-cos-version-id']);
result.headers['x-cos-delete-marker'] && (result.DeleteMarker = result.headers['x-cos-delete-marker']);
}
return result;
};
var _callback = function (err, data) {
callback && callback(formatResult(err), formatResult(data));
};
if (apiName !== 'getService' && apiName !== 'abortUploadTask') {
// 判断参数是否完整
if (!checkParams(apiName, params)) {
callback({error: 'lack of required params'});
_callback({error: 'lack of required params'});
return;

@@ -248,3 +309,3 @@ }

if (params.Region && regionMap[params.Region]) {
callback({error: 'Region should be ' + regionMap[params.Region]});
_callback({error: 'Region should be ' + regionMap[params.Region]});
return;

@@ -254,3 +315,3 @@ }

if (params.Region && params.Region.indexOf('cos.') > -1) {
callback({error: 'Region should not be start with "cos."'});
_callback({error: 'Region should not be start with "cos."'});
return;

@@ -266,3 +327,3 @@ }

} else {
callback({error: 'Bucket should format as "test-1250000000".'});
_callback({error: 'Bucket should format as "test-1250000000".'});
return;

@@ -281,3 +342,3 @@ }

}
var res = apiFn.call(this, params, callback);
var res = apiFn.call(this, params, _callback);
if (apiName === 'getAuth' || apiName === 'getObjectUrl') {

@@ -284,0 +345,0 @@ return res;

@@ -14,3 +14,3 @@ var fs = require('fs');

Bucket: process.env.Bucket, // Bucket 格式:test-1250000000
Region: process.env.Region,
Region: process.env.Region
}

@@ -21,3 +21,3 @@ }

SecretId: config.SecretId,
SecretKey: config.SecretKey,
SecretKey: config.SecretKey
});

@@ -99,3 +99,3 @@

data.Buckets && data.Buckets.forEach(function (item) {
if (item.Name === BucketLongName && item.Location === config.Region) {
if (item.Name === BucketLongName && (item.Location === config.Region || !item.Location)) {
hasBucket = true;

@@ -154,4 +154,3 @@ }

}, function (err, data) {
assert.ok(data.BucketExist);
assert.ok(data.BucketAuth);
assert.ok(data);
cos.deleteBucket({

@@ -229,3 +228,13 @@ Bucket: NewBucket,

assert.ok(objectContent === content);
done();
cos.putObjectCopy({
Bucket: config.Bucket, // Bucket 格式:test-1250000000
Region: config.Region,
//ServerSideEncryption: 'AES256',
Key: '1.copy.text',
CopySource: config.Bucket + '.cos.' + config.Region + '.myqcloud.com/' + filename, // Bucket 格式:test-1250000000
}, function (err, data) {
assert.ok(!err);
assert.ok(data.ETag.length > 0);
done();
});
});

@@ -311,3 +320,10 @@ });

assert.ok(objectContent === content);
done();
cos.headObject({
Bucket: config.Bucket,
Region: config.Region,
Key: key
}, function (err, data) {
assert.ok(!err);
done();
});
});

@@ -314,0 +330,0 @@ }, 2000);

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc