feat: add components
This commit is contained in:
68
components/component-cos.js
Normal file
68
components/component-cos.js
Normal file
@@ -0,0 +1,68 @@
|
||||
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user