Files
js-scripts/components/component-cos.js
2025-04-04 17:19:07 +08:00

69 lines
2.5 KiB
JavaScript

var counter = require('component-counter.js');
var requireJARs = () => {
$ONCE('component-cos-requireJARS').run(() => {
requireJAR('cos_api-5.2.2.jar');
requireJAR('httpcore-4.4.6.jar');
requireJAR('commons-codec-1.10.jar');
requireJAR('commons-logging-1.2.jar');
requireJAR('httpclient-4.5.3.jar');
requireJAR('httpmime-4.5.2.jar');
requireJAR('slf4j-api-1.7.21.jar');
requireJAR('log4j-1.2.17.jar');
requireJAR('slf4j-log4j12-1.7.21.jar');
requireJAR('joda-time-2.9.6.jar');
requireJAR('jackson-core-2.8.5.jar');
requireJAR('jackson-annotations-2.8.0.jar');
requireJAR('jackson-databind-2.8.5.jar');
});
};
var createCounterIS = (file) => {
var CounterInputStream = Packages.me.hatter.tools.commons.io.CounterInputStream;
var uploadFile = (file instanceof java.io.File) ? file : new java.io.File(file);
var uploadIS = new java.io.FileInputStream(uploadFile);
var counterIS = new CounterInputStream(uploadIS, counter.getCounterBar(uploadFile.length()));
return counterIS;
};
var putObject = (client, bucket, key, file) => {
var f = $$.file(file);
var objectMetadata = new Packages.com.qcloud.cos.model.ObjectMetadata();
objectMetadata.setContentLength(f.length());
var result = client.putObject(bucket, key, createCounterIS(f), objectMetadata);
return result;
};
// client -> https://cloud.tencent.com/document/product/436/10199
// region -> https://cloud.tencent.com/document/product/436/6224
var newClient = (region, appId, accessKey, secretKey) => {
requireJARs();
var COSClient = Packages.com.qcloud.cos.COSClient;
var Region = Packages.com.qcloud.cos.region.Region;
var ClientConfig = Packages.com.qcloud.cos.ClientConfig;
var BasicCOSCredentials = Packages.com.qcloud.cos.auth.BasicCOSCredentials;
var cred = new BasicCOSCredentials(appId, accessKey, secretKey);
var clientConfig = new ClientConfig(new Region(region));
var client = new COSClient(cred, clientConfig);
return {
runWith: (runFunc) => {
try {
runFunc(client);
} catch (e) {
println('COS Error: ' + e);
} finally {
client.shutdown();
}
}
};
};
if (typeof exports == 'object') {
exports.requireJARs = requireJARs;
exports.createCounterIS = createCounterIS;
exports.putObject = putObject;
exports.newClient = newClient;
}