var URLEncoder = java.net.URLEncoder; var Bytes = Packages.me.hatter.tools.commons.bytes.Bytes; var HMacs = Packages.me.hatter.tools.commons.security.hmac.HMacs; var counter = require('component-counter.js'); var requireJARs = () => { $ONCE('component-oss-requireJARS').run(() => { requireJAR('aliyun-sdk-oss-2.4.1-SNAPSHOT.jar'); requireJAR('commons-beanutils-1.8.0.jar'); requireJAR('commons-codec-1.9.jar'); requireJAR('commons-collections-3.2.1.jar'); requireJAR('commons-lang-2.5.jar'); requireJAR('commons-logging-1.2.jar'); requireJAR('ezmorph-1.0.6.jar'); requireJAR('hamcrest-core-1.1.jar'); requireJAR('httpclient-4.4.1.jar'); requireJAR('httpcore-4.4.1.jar'); requireJAR('jdom-1.1.jar'); requireJAR('json-lib-2.4-jdk15.jar'); }); }; var generateSignedURL = (endpoint, accessKeyId, accessKeySecret, bucketName, key, expiresInSeconds, isHTTP) => { var sb = []; sb.push(isHTTP ? 'http://' : 'https://'); // default HTTPS sb.push(bucketName); sb.push('.' + endpoint); sb.push('/' + key); var expires = parseInt($$.date().millis() / 1000) + expiresInSeconds; sb.push('?Expires=' + expires); sb.push('&OSSAccessKeyId=' + URLEncoder.encode(accessKeyId, 'UTF-8')); sb.push('&Signature=' + URLEncoder.encode(sign(accessKeySecret, expires, bucketName, key), 'UTF-8')); return sb.join(''); }; var sign = (accessKeySecret, expires, bucketName, key) => { return HMacs.sha1(Bytes.from(accessKeySecret).getBytes()) .sign(Bytes.from('GET\n\n\n' + expires + '\n/' + bucketName + '/' + key).getBytes()) .asBase64(); }; 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.getCounter(uploadFile.length())); return counterIS; }; var newClient = (endpoint, accessKey, secretKey) => { requireJARs(); var OSSClient = Packages.com.aliyun.oss.OSSClient; var client = new OSSClient(endpoint, accessKey, secretKey); return { runWith: (runFunc) => { try { runFunc(client); } catch (e) { println('OSS Error: ' + e); } finally { client.shutdown(); } } }; }; if (typeof exports == 'object') { exports.requireJARs = requireJARs; exports.sign = sign; exports.generateSignedURL = generateSignedURL; exports.createCounterIS = createCounterIS; exports.newClient = newClient; }