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