Skip to content

Commit ac90c45

Browse files
authored
feat(api): optimize compatibility (#5408)
1 parent f20e11b commit ac90c45

15 files changed

+504
-40
lines changed

chainbase/src/main/java/org/tron/core/capsule/TransactionCapsule.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,10 @@ public static byte[] getOwner(Transaction.Contract contract) {
346346
}
347347
}
348348
return owner.toByteArray();
349+
} catch (InvalidProtocolBufferException invalidProtocolBufferException) {
350+
logger.warn("InvalidProtocolBufferException occurred because {}, please verify the interface "
351+
+ "input parameters", invalidProtocolBufferException.getMessage());
352+
return new byte[0];
349353
} catch (Exception ex) {
350354
logger.error(ex.getMessage());
351355
return new byte[0];
Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package org.tron.core.services.http;
22

3+
import static org.tron.core.services.http.Util.existVisible;
4+
5+
import java.io.IOException;
36
import javax.servlet.http.HttpServletRequest;
47
import javax.servlet.http.HttpServletResponse;
58
import lombok.extern.slf4j.Slf4j;
@@ -8,29 +11,43 @@
811
import org.tron.api.GrpcAPI.AssetIssueList;
912
import org.tron.core.Wallet;
1013

11-
1214
@Component
1315
@Slf4j(topic = "API")
1416
public class GetAssetIssueListServlet extends RateLimiterServlet {
1517

1618
@Autowired
1719
private Wallet wallet;
1820

21+
@Override
1922
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
2023
try {
2124
boolean visible = Util.getVisible(request);
22-
AssetIssueList reply = wallet.getAssetIssueList();
23-
if (reply != null) {
24-
response.getWriter().println(JsonFormat.printToString(reply, visible));
25-
} else {
26-
response.getWriter().println("{}");
27-
}
25+
response(response, visible);
2826
} catch (Exception e) {
2927
Util.processError(e, response);
3028
}
3129
}
3230

31+
@Override
3332
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
34-
doGet(request, response);
33+
try {
34+
PostParams params = PostParams.getPostParams(request);
35+
boolean visible = Util.getVisible(request);
36+
if (!existVisible(request)) {
37+
visible = params.isVisible();
38+
}
39+
response(response, visible);
40+
} catch (Exception e) {
41+
Util.processError(e, response);
42+
}
43+
}
44+
45+
private void response(HttpServletResponse response, boolean visible) throws IOException {
46+
AssetIssueList reply = wallet.getAssetIssueList();
47+
if (reply != null) {
48+
response.getWriter().println(JsonFormat.printToString(reply, visible));
49+
} else {
50+
response.getWriter().println("{}");
51+
}
3552
}
3653
}

framework/src/main/java/org/tron/core/services/http/GetAvailableUnfreezeCountServlet.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) {
2323
try {
2424
boolean visible = Util.getVisible(request);
2525
String ownerAddress = request.getParameter("ownerAddress");
26+
if (ownerAddress == null) {
27+
ownerAddress = request.getParameter("owner_address");
28+
}
2629
if (visible) {
2730
ownerAddress = Util.getHexAddress(ownerAddress);
2831
}

framework/src/main/java/org/tron/core/services/http/GetBlockByNumServlet.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,21 @@ public class GetBlockByNumServlet extends RateLimiterServlet {
1818
@Autowired
1919
private Wallet wallet;
2020

21+
@Override
2122
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
2223
try {
23-
fillResponse(Util.getVisible(request), Long.parseLong(request.getParameter("num")), response);
24+
long num = 0;
25+
String numStr = request.getParameter("num");
26+
if (numStr != null) {
27+
num = Long.parseLong(numStr);
28+
}
29+
fillResponse(Util.getVisible(request), num, response);
2430
} catch (Exception e) {
2531
Util.processError(e, response);
2632
}
2733
}
2834

35+
@Override
2936
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
3037
try {
3138
PostParams params = PostParams.getPostParams(request);

framework/src/main/java/org/tron/core/services/http/GetCanDelegatedMaxSizeServlet.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,15 @@ public class GetCanDelegatedMaxSizeServlet extends RateLimiterServlet {
1818
@Autowired
1919
private Wallet wallet;
2020

21+
@Override
2122
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
2223
try {
2324
boolean visible = Util.getVisible(request);
24-
int type = Integer.parseInt(request.getParameter("type"));
25+
int type = 0;
26+
String typeStr = request.getParameter("type");
27+
if (typeStr != null) {
28+
type = Integer.parseInt(typeStr);
29+
}
2530
String ownerAddress = request.getParameter("owner_address");
2631
if (visible) {
2732
ownerAddress = Util.getHexAddress(ownerAddress);
@@ -34,6 +39,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) {
3439
}
3540
}
3641

42+
@Override
3743
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
3844
try {
3945
PostParams params = PostParams.getPostParams(request);

framework/src/main/java/org/tron/core/services/http/GetCanWithdrawUnfreezeAmountServlet.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,29 @@ public class GetCanWithdrawUnfreezeAmountServlet extends RateLimiterServlet {
1818
@Autowired
1919
private Wallet wallet;
2020

21+
@Override
2122
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
2223
try {
2324
boolean visible = Util.getVisible(request);
2425
String ownerAddress = request.getParameter("owner_address");
25-
long timestamp = Long.valueOf(request.getParameter("timestamp"));
26+
long timestamp = 0;
27+
String timestampStr = request.getParameter("timestamp");
28+
if (timestampStr != null) {
29+
timestamp = Long.parseLong(timestampStr);
30+
}
2631
if (visible) {
2732
ownerAddress = Util.getHexAddress(ownerAddress);
2833
}
2934
fillResponse(visible,
30-
ByteString.copyFrom(ByteArray.fromHexString(ownerAddress)),
31-
timestamp,
32-
response);
35+
ByteString.copyFrom(ByteArray.fromHexString(ownerAddress)),
36+
timestamp,
37+
response);
3338
} catch (Exception e) {
3439
Util.processError(e, response);
3540
}
3641
}
3742

43+
@Override
3844
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
3945
try {
4046
PostParams params = PostParams.getPostParams(request);
Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package org.tron.core.services.http;
22

3+
import static org.tron.core.services.http.Util.existVisible;
4+
import static org.tron.core.services.http.Util.getVisible;
5+
6+
import java.io.IOException;
37
import javax.servlet.http.HttpServletRequest;
48
import javax.servlet.http.HttpServletResponse;
59
import lombok.extern.slf4j.Slf4j;
@@ -8,29 +12,43 @@
812
import org.tron.core.Wallet;
913
import org.tron.protos.Protocol.Block;
1014

11-
1215
@Component
1316
@Slf4j(topic = "API")
1417
public class GetNowBlockServlet extends RateLimiterServlet {
1518

1619
@Autowired
1720
private Wallet wallet;
1821

22+
@Override
1923
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
2024
try {
21-
boolean visible = Util.getVisible(request);
22-
Block reply = wallet.getNowBlock();
23-
if (reply != null) {
24-
response.getWriter().println(Util.printBlock(reply, visible));
25-
} else {
26-
response.getWriter().println("{}");
27-
}
25+
boolean visible = getVisible(request);
26+
response(response, visible);
2827
} catch (Exception e) {
2928
Util.processError(e, response);
3029
}
3130
}
3231

32+
@Override
3333
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
34-
doGet(request, response);
34+
try {
35+
PostParams params = PostParams.getPostParams(request);
36+
boolean visible = getVisible(request);
37+
if (!existVisible(request)) {
38+
visible = params.isVisible();
39+
}
40+
response(response, visible);
41+
} catch (Exception e) {
42+
Util.processError(e, response);
43+
}
44+
}
45+
46+
private void response(HttpServletResponse response, boolean visible) throws IOException {
47+
Block reply = wallet.getNowBlock();
48+
if (reply != null) {
49+
response.getWriter().println(Util.printBlock(reply, visible));
50+
} else {
51+
response.getWriter().println("{}");
52+
}
3553
}
3654
}
Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package org.tron.core.services.http;
22

3+
import static org.tron.core.services.http.Util.existVisible;
4+
5+
import java.io.IOException;
36
import javax.servlet.http.HttpServletRequest;
47
import javax.servlet.http.HttpServletResponse;
58
import lombok.extern.slf4j.Slf4j;
@@ -8,29 +11,43 @@
811
import org.tron.api.GrpcAPI.NodeList;
912
import org.tron.core.Wallet;
1013

11-
1214
@Component
1315
@Slf4j(topic = "API")
1416
public class ListNodesServlet extends RateLimiterServlet {
1517

1618
@Autowired
1719
private Wallet wallet;
1820

21+
@Override
1922
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
2023
try {
2124
boolean visible = Util.getVisible(request);
22-
NodeList reply = wallet.listNodes();
23-
if (reply != null) {
24-
response.getWriter().println(JsonFormat.printToString(reply, visible));
25-
} else {
26-
response.getWriter().println("{}");
27-
}
25+
response(response, visible);
2826
} catch (Exception e) {
2927
Util.processError(e, response);
3028
}
3129
}
3230

31+
@Override
3332
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
34-
doGet(request, response);
33+
try {
34+
PostParams params = PostParams.getPostParams(request);
35+
boolean visible = Util.getVisible(request);
36+
if (!existVisible(request)) {
37+
visible = params.isVisible();
38+
}
39+
response(response, visible);
40+
} catch (Exception e) {
41+
Util.processError(e, response);
42+
}
43+
}
44+
45+
private void response(HttpServletResponse response, boolean visible) throws IOException {
46+
NodeList reply = wallet.listNodes();
47+
if (reply != null) {
48+
response.getWriter().println(JsonFormat.printToString(reply, visible));
49+
} else {
50+
response.getWriter().println("{}");
51+
}
3552
}
3653
}
Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package org.tron.core.services.http;
22

3+
import static org.tron.core.services.http.Util.existVisible;
4+
5+
import java.io.IOException;
36
import javax.servlet.http.HttpServletRequest;
47
import javax.servlet.http.HttpServletResponse;
58
import lombok.extern.slf4j.Slf4j;
@@ -8,29 +11,43 @@
811
import org.tron.api.GrpcAPI.ProposalList;
912
import org.tron.core.Wallet;
1013

11-
1214
@Component
1315
@Slf4j(topic = "API")
1416
public class ListProposalsServlet extends RateLimiterServlet {
1517

1618
@Autowired
1719
private Wallet wallet;
1820

21+
@Override
1922
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
2023
try {
2124
boolean visible = Util.getVisible(request);
22-
ProposalList reply = wallet.getProposalList();
23-
if (reply != null) {
24-
response.getWriter().println(JsonFormat.printToString(reply, visible));
25-
} else {
26-
response.getWriter().println("{}");
27-
}
25+
response(response, visible);
2826
} catch (Exception e) {
2927
Util.processError(e, response);
3028
}
3129
}
3230

31+
@Override
3332
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
34-
doGet(request, response);
33+
try {
34+
PostParams params = PostParams.getPostParams(request);
35+
boolean visible = Util.getVisible(request);
36+
if (!existVisible(request)) {
37+
visible = params.isVisible();
38+
}
39+
response(response, visible);
40+
} catch (Exception e) {
41+
Util.processError(e, response);
42+
}
43+
}
44+
45+
private void response(HttpServletResponse response, boolean visible) throws IOException {
46+
ProposalList reply = wallet.getProposalList();
47+
if (reply != null) {
48+
response.getWriter().println(JsonFormat.printToString(reply, visible));
49+
} else {
50+
response.getWriter().println("{}");
51+
}
3552
}
3653
}

framework/src/main/java/org/tron/core/services/http/PostParams.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package org.tron.core.services.http;
22

3+
import static org.apache.http.entity.ContentType.APPLICATION_FORM_URLENCODED;
4+
import static org.tron.core.services.http.Util.getJsonString;
5+
36
import java.util.stream.Collectors;
47
import javax.servlet.http.HttpServletRequest;
58
import lombok.Getter;
@@ -21,6 +24,9 @@ public PostParams(String params, boolean visible) {
2124
public static PostParams getPostParams(HttpServletRequest request) throws Exception {
2225
String input = request.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
2326
Util.checkBodySize(input);
27+
if (APPLICATION_FORM_URLENCODED.getMimeType().equals(request.getContentType())) {
28+
input = getJsonString(input);
29+
}
2430
boolean visible = Util.getVisiblePost(input);
2531
return new PostParams(input, visible);
2632
}

0 commit comments

Comments
 (0)