You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
parttimejob/node_modules/ali-oss/lib/common/image/processObjectSave.js

46 lines
1.2 KiB

1 month ago
/* eslint-disable no-use-before-define */
const { checkBucketName: _checkBucketName } = require('../utils/checkBucketName');
const querystring = require('querystring');
const {
Base64: { encode: str2Base64 }
} = require('js-base64');
const proto = exports;
proto.processObjectSave = async function processObjectSave(sourceObject, targetObject, process, targetBucket) {
checkArgs(sourceObject, 'sourceObject');
checkArgs(targetObject, 'targetObject');
checkArgs(process, 'process');
targetObject = this._objectName(targetObject);
if (targetBucket) {
_checkBucketName(targetBucket);
}
const params = this._objectRequestParams('POST', sourceObject, {
subres: 'x-oss-process'
});
const bucketParam = targetBucket ? `,b_${str2Base64(targetBucket)}` : '';
targetObject = str2Base64(targetObject);
const content = {
'x-oss-process': `${process}|sys/saveas,o_${targetObject}${bucketParam}`
};
params.content = querystring.stringify(content);
const result = await this.request(params);
return {
res: result.res,
status: result.res.status
};
};
function checkArgs(name, key) {
if (!name) {
throw new Error(`${key} is required`);
}
if (typeof name !== 'string') {
throw new Error(`${key} must be String`);
}
}