@@ -8,19 +8,21 @@ interface CallHandler {
|
||||
private Object result
|
||||
private Integer errorCode
|
||||
private String errorMessage
|
||||
private Object errorDetails
|
||||
|
||||
Result(Object result, Integer errorCode, String errorMessage) {
|
||||
Result(Object result, Integer errorCode, String errorMessage, Object errorDetails) {
|
||||
this.result = result
|
||||
this.errorCode = errorCode
|
||||
this.errorMessage = errorMessage
|
||||
this.errorDetails = errorDetails
|
||||
}
|
||||
|
||||
static Result ok(Object result) {
|
||||
return new Result(result, null, null)
|
||||
return new Result(result, null, null, null)
|
||||
}
|
||||
|
||||
static Result error(int errorCode, String errorMessage) {
|
||||
return new Result(null, errorCode, errorMessage)
|
||||
static Result error(int errorCode, String errorMessage, Object details = null) {
|
||||
return new Result(null, errorCode, errorMessage, details)
|
||||
}
|
||||
|
||||
boolean isResult() {
|
||||
@@ -38,5 +40,9 @@ interface CallHandler {
|
||||
String getErrorMessage() {
|
||||
return errorMessage
|
||||
}
|
||||
|
||||
Object getErrorDetails() {
|
||||
return errorDetails
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -44,6 +44,9 @@ class SimpleUpstream {
|
||||
code : result.getErrorCode(),
|
||||
message: result.getErrorMessage()
|
||||
]
|
||||
if (result.getErrorDetails() != null) {
|
||||
resultJson["error"]["data"] = result.getErrorDetails()
|
||||
}
|
||||
}
|
||||
resp.status(200)
|
||||
resp.header("content-type", "application/json")
|
||||
|
||||
@@ -19,6 +19,11 @@ class TestcaseHandler implements CallHandler {
|
||||
&& params[0].to?.toLowerCase() == "0x542156d51D10Db5acCB99f9Db7e7C91B74E80a2c".toLowerCase()) {
|
||||
return Result.error(-32015, "VM execution error.")
|
||||
}
|
||||
// https://github.com/emeraldpay/dshackle/issues/35 (second)
|
||||
if (method == "eth_call"
|
||||
&& params[0].to?.toLowerCase() == "0x8ee2a5aca4f88cb8c757b8593d0734855dcc0eba".toLowerCase()) {
|
||||
return Result.error(-32015, "VM execution error.", "revert: SafeMath: division by zero")
|
||||
}
|
||||
// https://github.com/emeraldpay/dshackle/issues/43
|
||||
if (method == "debug_traceTransaction"
|
||||
&& params[0].toLowerCase() == "0xd949bc0fe1a5d16f4522bc47933554dcc4ada0493ff71ee1973b2410257af9fe".toLowerCase()) {
|
||||
|
||||
Reference in New Issue
Block a user