Search in sources :

Example 1 with ContractCall

use of io.nuls.contract.rpc.form.ContractCall in project nuls by nuls-io.

the class CallContractProcessor method execute.

@Override
public CommandResult execute(String[] args) {
    ContractCall form = paramsData.get();
    if (null == form) {
        form = getContractCall(args);
    }
    if (null == form) {
        return CommandResult.getFailed("parameter error.");
    }
    String sender = form.getSender();
    RpcClientResult res = CommandHelper.getPassword(sender, restFul);
    if (!res.isSuccess()) {
        return CommandResult.getFailed(res);
    }
    String password = (String) res.getData();
    res = getContractCallArgsJson();
    if (!res.isSuccess()) {
        return CommandResult.getFailed(res);
    }
    Object[] contractArgs = (Object[]) res.getData();
    Map<String, Object> parameters = new HashMap<>();
    parameters.put("sender", sender);
    parameters.put("gasLimit", form.getGasLimit());
    parameters.put("price", form.getPrice());
    parameters.put("password", password);
    parameters.put("remark", form.getRemark());
    parameters.put("contractAddress", form.getContractAddress());
    parameters.put("value", form.getValue());
    parameters.put("methodName", form.getMethodName());
    parameters.put("methodDesc", form.getMethodDesc());
    parameters.put("args", contractArgs);
    RpcClientResult result = restFul.post("/contract/call", parameters);
    if (result.isFailed()) {
        return CommandResult.getFailed(result);
    }
    return CommandResult.getResult(result);
}
Also used : HashMap(java.util.HashMap) RpcClientResult(io.nuls.kernel.model.RpcClientResult) ContractCall(io.nuls.contract.rpc.form.ContractCall)

Example 2 with ContractCall

use of io.nuls.contract.rpc.form.ContractCall in project nuls by nuls-io.

the class CallContractProcessor method getContractCall.

private ContractCall getContractCall(String[] args) {
    ContractCall call = null;
    try {
        call = new ContractCall();
        call.setSender(args[1].trim());
        call.setGasLimit(Long.valueOf(args[2].trim()));
        call.setPrice(Long.valueOf(args[3].trim()));
        call.setContractAddress(args[4].trim());
        call.setMethodName(args[5].trim());
        long naValue = 0L;
        Na na = Na.parseNuls(args[6].trim());
        if (na != null) {
            naValue = na.getValue();
        }
        call.setValue(naValue);
        if (args.length == 9) {
            String argType = args[7].trim();
            if (argType.equals("-d")) {
                call.setMethodDesc(args[8].trim());
            } else if (argType.equals("-r")) {
                call.setRemark(args[8].trim());
            } else {
                return null;
            }
        } else if (args.length == 11) {
            String argType0 = args[7].trim();
            String argType1 = args[9].trim();
            boolean isType0D = argType0.equals("-d");
            boolean isType1D = argType1.equals("-d");
            boolean isType0R = argType0.equals("-r");
            boolean isType1R = argType1.equals("-r");
            if ((isType0D && isType1D) || (isType0R && isType1R)) {
                // 不能同时为-d或-r
                return null;
            }
            if (isType0D) {
                call.setMethodDesc(args[8].trim());
            }
            if (isType0R) {
                call.setRemark(args[8].trim());
            }
            if (isType1D) {
                call.setMethodDesc(args[10].trim());
            }
            if (isType1R) {
                call.setRemark(args[10].trim());
            }
        }
        return call;
    } catch (Exception e) {
        e.fillInStackTrace();
        return null;
    }
}
Also used : Na(io.nuls.kernel.model.Na) ContractCall(io.nuls.contract.rpc.form.ContractCall) IOException(java.io.IOException)

Example 3 with ContractCall

use of io.nuls.contract.rpc.form.ContractCall in project nuls by nuls-io.

the class CallContractProcessor method argsValidate.

@Override
public boolean argsValidate(String[] args) {
    boolean result;
    do {
        int length = args.length;
        if (length != 7 && length != 9 && length != 11) {
            result = false;
            break;
        }
        if (!CommandHelper.checkArgsIsNull(args)) {
            result = false;
            break;
        }
        // gasLimit
        if (!StringUtils.isNumeric(args[2])) {
            result = false;
            break;
        }
        // price
        if (!StringUtils.isNumeric(args[3])) {
            result = false;
            break;
        }
        // value
        if (!StringUtils.isNumeric(args[6])) {
            result = false;
            break;
        }
        ContractCall form = getContractCall(args);
        if (null == form) {
            result = false;
            break;
        }
        paramsData.set(form);
        result = form.getValue() >= 0;
    } while (false);
    return result;
}
Also used : ContractCall(io.nuls.contract.rpc.form.ContractCall)

Aggregations

ContractCall (io.nuls.contract.rpc.form.ContractCall)3 Na (io.nuls.kernel.model.Na)1 RpcClientResult (io.nuls.kernel.model.RpcClientResult)1 IOException (java.io.IOException)1 HashMap (java.util.HashMap)1