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; }