69 lines
2.5 KiB
JavaScript
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;
|
|
}
|