use of io.nuls.kernel.model.RpcClientResult in project nuls by nuls-io.
the class TokenTransferProcessor method execute.
@Override
public CommandResult execute(String[] args) {
ContractTokenTransfer form = paramsData.get();
if (null == form) {
form = getTokenTransferForm(args);
}
String address = form.getAddress();
RpcClientResult res = CommandHelper.getPassword(address, restFul);
if (!res.isSuccess()) {
return CommandResult.getFailed(res);
}
String password = (String) res.getData();
String contractAddress = form.getContractAddress();
String url = "/contract/" + contractAddress;
RpcClientResult checkResult = restFul.get(url, null);
if (checkResult.isFailed()) {
return CommandResult.getFailed(checkResult);
}
Map<String, Object> data = (Map) checkResult.getData();
Boolean isNrc20 = (Boolean) data.get("isNrc20");
if (!isNrc20) {
return CommandResult.getFailed("Non-NRC20 contract, can not transfer token.");
}
Integer decimals = (Integer) data.get("decimals");
BigDecimal amountBigD = new BigDecimal(form.getAmount()).multiply(BigDecimal.TEN.pow(decimals));
try {
BigInteger amountBigI = amountBigD.toBigIntegerExact();
form.setAmount(amountBigI.toString());
} catch (Exception e) {
return CommandResult.getFailed("Illegal amount, you can have up to " + decimals + " valid digits after the decimal point.");
}
Map<String, Object> parameters = new HashMap<>();
parameters.put("address", form.getAddress());
parameters.put("toAddress", form.getToAddress());
parameters.put("contractAddress", form.getContractAddress());
parameters.put("gasLimit", form.getGasLimit());
parameters.put("price", form.getPrice());
parameters.put("password", password);
parameters.put("amount", form.getAmount());
parameters.put("remark", form.getRemark());
RpcClientResult result = restFul.post("/contract/token/transfer", parameters);
if (result.isFailed()) {
return CommandResult.getFailed(result);
}
Map<String, Object> resultMap = MapUtil.createLinkedHashMap(2);
resultMap.put("txHash", result.getData());
result.setData(resultMap);
return CommandResult.getResult(result);
}
use of io.nuls.kernel.model.RpcClientResult in project nuls by nuls-io.
the class GetContractTxListProcessor method execute.
@Override
public CommandResult execute(String[] args) {
int pageNumber = 0;
int pageSize = 0;
if (args.length == 4) {
pageNumber = Integer.parseInt(args[2]);
pageSize = Integer.parseInt(args[3]);
} else {
pageNumber = Integer.parseInt(args[3]);
pageSize = Integer.parseInt(args[4]);
}
String address = args[1];
Map<String, Object> parameters = new HashMap<>();
parameters.put("pageNumber", pageNumber);
parameters.put("pageSize", pageSize);
/**
* user type accountAddress argument.
*/
if (args.length == 5) {
parameters.put("accountAddress", args[2]);
}
String url = "/contract/tx/list/" + address;
RpcClientResult result = restFulUtils.get(url, parameters);
if (result.isFailed()) {
return CommandResult.getFailed(result);
}
/**
* format amount and trx fee. 1NULS = 100000000Na
*/
List<Map<String, Object>> list = (List<Map<String, Object>>) ((Map) result.getData()).get("list");
for (Map<String, Object> map : list) {
map.put("fee", CommandHelper.naToNuls(map.get("fee")));
map.put("value", CommandHelper.naToNuls(map.get("value")));
map.put("time", DateUtil.convertDate(new Date((Long) map.get("time"))));
// map.put("status", statusExplain((Integer)map.get("status")));
map.put("type", CommandHelper.txTypeExplain((Integer) map.get("type")));
List<Map<String, Object>> inputs = (List<Map<String, Object>>) map.get("inputs");
for (Map<String, Object> input : inputs) {
input.put("value", CommandHelper.naToNuls(input.get("value")));
}
map.put("inputs", inputs);
List<Map<String, Object>> outputs = (List<Map<String, Object>>) map.get("outputs");
for (Map<String, Object> output : outputs) {
output.put("value", CommandHelper.naToNuls(output.get("value")));
// output.put("status", statusExplainForOutPut((Integer) output.get("status")));
}
map.put("outputs", outputs);
Map<String, Object> txDataMap = (Map) map.get("txData");
if (txDataMap != null) {
Map<String, Object> dataMap = (Map) txDataMap.get("data");
if (dataMap != null) {
dataMap.put("value", CommandHelper.naToNuls(dataMap.get("value")));
dataMap.put("price", CommandHelper.naToNuls(dataMap.get("price")));
}
}
Map<String, Object> contractResultMap = (Map) map.get("contractResult");
if (contractResultMap != null) {
contractResultMap.put("totalFee", CommandHelper.naToNuls(contractResultMap.get("totalFee")));
contractResultMap.put("txSizeFee", CommandHelper.naToNuls(contractResultMap.get("txSizeFee")));
contractResultMap.put("actualContractFee", CommandHelper.naToNuls(contractResultMap.get("actualContractFee")));
contractResultMap.put("refundFee", CommandHelper.naToNuls(contractResultMap.get("refundFee")));
contractResultMap.put("value", CommandHelper.naToNuls(contractResultMap.get("value")));
contractResultMap.put("price", CommandHelper.naToNuls(contractResultMap.get("price")));
contractResultMap.put("balance", CommandHelper.naToNuls(contractResultMap.get("balance")));
}
}
result.setData(list);
return CommandResult.getResult(result);
}
use of io.nuls.kernel.model.RpcClientResult in project nuls by nuls-io.
the class GetUtxoAccountsProcessor method execute.
@Override
public CommandResult execute(String[] args) {
String address = args[1];
RpcClientResult result = restFul.get("/utxoAccounts/" + address, null);
if (result.isFailed()) {
return CommandResult.getFailed(result);
}
return CommandResult.getResult(result);
}
use of io.nuls.kernel.model.RpcClientResult in project nuls by nuls-io.
the class VersionProcessor method execute.
@Override
public CommandResult execute(String[] args) {
RpcClientResult result = restFul.get("/client/version", null);
if (result.isFailed()) {
return CommandResult.getFailed(result);
}
Map<String, Object> map = ((Map) result.getData());
if (null != map) {
String infromation = (String) map.get("infromation");
map.put("infromation", infromation.replaceAll("\r|\n", ""));
}
result.setData(map);
return CommandResult.getResult(result);
}
use of io.nuls.kernel.model.RpcClientResult in project nuls by nuls-io.
the class RpcServerFilter method toResponse.
@Override
public Response toResponse(Exception e) {
// System.out.println("---------------" + request.getRequestURI());
Log.error("RequestURI is " + request.getRequestURI(), e);
RpcClientResult result;
if (e instanceof NulsException) {
NulsException exception = (NulsException) e;
result = new RpcClientResult(false, exception.getErrorCode());
} else if (e instanceof NulsRuntimeException) {
NulsRuntimeException exception = (NulsRuntimeException) e;
result = new RpcClientResult(false, new ErrorData(exception.getCode(), exception.getMessage()));
} else {
result = Result.getFailed().setMsg(e.getMessage()).toRpcClientResult();
}
return Response.ok(result, MediaType.APPLICATION_JSON).build();
}
Aggregations