feat: add components

This commit is contained in:
2025-04-04 17:19:07 +08:00
parent 6f494ec9ca
commit c37b9f0ab2
40 changed files with 2088 additions and 0 deletions

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