diff --git a/alibabacloud-gateway-sls/Teafile b/alibabacloud-gateway-sls/Teafile
index 5bb58792..f11876a3 100644
--- a/alibabacloud-gateway-sls/Teafile
+++ b/alibabacloud-gateway-sls/Teafile
@@ -1,7 +1,7 @@
{
"scope": "alibabacloud",
"name": "GatewaySLS",
- "version": "0.1.11",
+ "version": "0.1.12",
"main": "./main.tea",
"maintainers": [
{
@@ -93,7 +93,7 @@
},
"releaselog": {
"changelog": [
- "feat: sls support auto compress."
+ "[java]feat: sls java sdk support PutLogs with protobuf."
],
"compatible": true
}
diff --git a/alibabacloud-gateway-sls/java/pom.xml b/alibabacloud-gateway-sls/java/pom.xml
index fdbebb95..a8eb0412 100644
--- a/alibabacloud-gateway-sls/java/pom.xml
+++ b/alibabacloud-gateway-sls/java/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.aliyun
alibabacloud-gateway-sls
- 0.3.0
+ 0.4.0
jar
alibabacloud-gateway-sls
@@ -49,12 +49,12 @@
com.aliyun
alibabacloud-gateway-spi
- 0.0.2
+ 0.0.3
com.aliyun
credentials-java
- 0.3.6
+ 1.0.2
com.aliyun
@@ -64,7 +64,7 @@
com.aliyun
openapiutil
- 0.2.1
+ 0.2.2
com.aliyun
@@ -84,12 +84,12 @@
com.aliyun
darabonba-encode-util
- 0.0.2
+ 0.0.3
com.aliyun
darabonba-signature-util
- 0.0.4
+ 0.0.5
com.aliyun
@@ -99,7 +99,7 @@
com.aliyun
alibabacloud-gateway-sls-util
- 0.3.0
+ 0.4.0
diff --git a/alibabacloud-gateway-sls/java/src/main/java/com/aliyun/gateway/sls/Client.java b/alibabacloud-gateway-sls/java/src/main/java/com/aliyun/gateway/sls/Client.java
index 56d8e2b7..75d76114 100644
--- a/alibabacloud-gateway-sls/java/src/main/java/com/aliyun/gateway/sls/Client.java
+++ b/alibabacloud-gateway-sls/java/src/main/java/com/aliyun/gateway/sls/Client.java
@@ -66,7 +66,11 @@ public void modifyRequest(com.aliyun.gateway.spi.models.InterceptorContext conte
// get body bytes
byte[] bodyBytes = null;
if (!com.aliyun.teautil.Common.isUnset(request.body)) {
- if (com.aliyun.darabonbastring.Client.equals(request.reqBodyType, "json") || com.aliyun.darabonbastring.Client.equals(request.reqBodyType, "formData")) {
+ // PutLogs
+ if (com.aliyun.darabonbastring.Client.equals(request.action, "PutLogs")) {
+ bodyBytes = com.aliyun.gateway.sls.util.Client.serializeLogGroupToPB(request.body);
+ request.headers.put("content-type", "application/x-protobuf");
+ } else if (com.aliyun.darabonbastring.Client.equals(request.reqBodyType, "json") || com.aliyun.darabonbastring.Client.equals(request.reqBodyType, "formData")) {
request.headers.put("content-type", "application/json");
String bodyStr = com.aliyun.teautil.Common.toJSONString(request.body);
bodyBytes = com.aliyun.teautil.Common.toBytes(bodyStr);
diff --git a/alibabacloud-gateway-sls/main.tea b/alibabacloud-gateway-sls/main.tea
index 40cad4a0..783e2fbe 100644
--- a/alibabacloud-gateway-sls/main.tea
+++ b/alibabacloud-gateway-sls/main.tea
@@ -57,7 +57,12 @@ async function modifyRequest(context: SPI.InterceptorContext, attributeMap: SPI.
// get body bytes
var bodyBytes : bytes = null;
if (!Util.isUnset(request.body)) {
- if (String.equals(request.reqBodyType, 'json') || String.equals(request.reqBodyType, 'formData')) {
+
+ // PutLogs
+ if (String.equals(request.action, 'PutLogs')) {
+ bodyBytes = SLS_Util.serializeLogGroupToPB(request.body);
+ request.headers['content-type'] = 'application/x-protobuf';
+ } else if (String.equals(request.reqBodyType, 'json') || String.equals(request.reqBodyType, 'formData')) {
request.headers['content-type'] = 'application/json';
var bodyStr = Util.toJSONString(request.body);
bodyBytes = Util.toBytes(bodyStr);
diff --git a/alibabacloud-gateway-sls/util/Teafile b/alibabacloud-gateway-sls/util/Teafile
index 3ec91363..0c4e6941 100644
--- a/alibabacloud-gateway-sls/util/Teafile
+++ b/alibabacloud-gateway-sls/util/Teafile
@@ -1,7 +1,7 @@
{
"scope": "alibabacloud",
"name": "GatewaySLS_Util",
- "version": "0.0.4",
+ "version": "0.0.5",
"main": "./main.tea",
"maintainers": [
{
diff --git a/alibabacloud-gateway-sls/util/java/pom.xml b/alibabacloud-gateway-sls/util/java/pom.xml
index 25fd8c4e..5187f0c1 100644
--- a/alibabacloud-gateway-sls/util/java/pom.xml
+++ b/alibabacloud-gateway-sls/util/java/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.aliyun
alibabacloud-gateway-sls-util
- 0.3.0
+ 0.4.0
jar
alibabacloud-gateway-sls-util
@@ -54,12 +54,12 @@
com.aliyun
tea
- 1.2.3
+ 1.3.3
com.aliyun
tea-util
- 0.2.14
+ 0.2.23
com.github.luben
@@ -72,6 +72,11 @@
4.11
test
+
+ com.google.protobuf
+ protobuf-java
+ 2.5.0
+
@@ -123,6 +128,44 @@
published
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.2.4
+
+
+
+ com.google.protobuf:protobuf-java
+
+
+
+
+ com.google.protobuf
+ com.aliyun.gateway.sls.thirdparty.com.google.protobuf
+
+
+
+
+
+ *:*
+
+ META-INF/*.SF
+ META-INF/*.DSA
+ META-INF/*.RSA
+ **/pom.xml
+
+
+
+
+
+
+ package
+
+ shade
+
+
+
+
\ No newline at end of file
diff --git a/alibabacloud-gateway-sls/util/java/src/main/java/com/aliyun/gateway/sls/util/Client.java b/alibabacloud-gateway-sls/util/java/src/main/java/com/aliyun/gateway/sls/util/Client.java
index 07fdade1..75398cc1 100644
--- a/alibabacloud-gateway-sls/util/java/src/main/java/com/aliyun/gateway/sls/util/Client.java
+++ b/alibabacloud-gateway-sls/util/java/src/main/java/com/aliyun/gateway/sls/util/Client.java
@@ -49,4 +49,8 @@ public static Boolean isDecompressorAvailable(String compressType) throws Except
public static Long bytesLength(byte[] src) throws Exception {
return (long) src.length;
}
+
+ public static byte[] serializeLogGroupToPB(Object logGroup) throws Exception {
+ return LogGroupSerializer.serializeLogGroupToPB(logGroup);
+ }
}
diff --git a/alibabacloud-gateway-sls/util/java/src/main/java/com/aliyun/gateway/sls/util/LogGroupSerializer.java b/alibabacloud-gateway-sls/util/java/src/main/java/com/aliyun/gateway/sls/util/LogGroupSerializer.java
new file mode 100644
index 00000000..15e433a6
--- /dev/null
+++ b/alibabacloud-gateway-sls/util/java/src/main/java/com/aliyun/gateway/sls/util/LogGroupSerializer.java
@@ -0,0 +1,145 @@
+package com.aliyun.gateway.sls.util;
+
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashMap;
+
+public class LogGroupSerializer {
+ @SuppressWarnings("unchecked")
+ public static byte[] serializeLogGroupToPB(Object logGroup) throws Exception {
+ if (!(logGroup instanceof HashMap)) {
+ throw new IllegalArgumentException("Invalid body type " + logGroup.getClass());
+ }
+
+ Logs.LogGroup.Builder logs = Logs.LogGroup.newBuilder();
+ HashMap body = (HashMap) logGroup;
+
+ String topic = (String) body.get("Topic");
+ if (topic != null) {
+ logs.setTopic(topic);
+ }
+
+ String source = (String) body.get("Source");
+ if (source == null || source.isEmpty()) {
+ source = getSourceIP();
+ }
+ if (source != null && !source.isEmpty()) {
+ logs.setSource(source);
+ }
+
+ serializeLogTags(logs, body);
+
+ serializeLogs(logs, body);
+ return logs.build().toByteArray();
+ }
+
+ @SuppressWarnings("unchecked")
+ private static void serializeLogs(Logs.LogGroup.Builder logs, HashMap body) {
+ ArrayList