diff --git a/src/main/java/org/qortal/api/resource/AtResource.java b/src/main/java/org/qortal/api/resource/AtResource.java index fd045b7d..80a6e299 100644 --- a/src/main/java/org/qortal/api/resource/AtResource.java +++ b/src/main/java/org/qortal/api/resource/AtResource.java @@ -9,6 +9,7 @@ import io.swagger.v3.oas.annotations.parameters.RequestBody; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import java.io.IOException; import java.util.List; import javax.servlet.http.HttpServletRequest; @@ -39,10 +40,13 @@ import org.qortal.transform.TransformationException; import org.qortal.transform.transaction.DeployAtTransactionTransformer; import org.qortal.utils.Base58; import java.util.Base64; - +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import com.fasterxml.jackson.databind.ObjectMapper; @Path("/at") @Tag(name = "Automated Transactions") public class AtResource { + private static final Logger logger = LoggerFactory.getLogger(AtResource.class); @Context HttpServletRequest request; @@ -183,15 +187,27 @@ public class AtResource { ) } ) - public byte[] createMachineState(CreationRequest request) { - return MachineState.toCreationBytes( - request.getCiyamAtVersion(), - request.getCodeBytes(), - request.getDataBytes(), - request.getNumCallStackPages(), - request.getNumUserStackPages(), - request.getMinActivationAmount() - ); + public String createMachineState(String jsonBody) throws IOException { + ObjectMapper objectMapper = new ObjectMapper(); + CreationRequest request = objectMapper.readValue(jsonBody, CreationRequest.class); + + logger.info("ciyamAtVersion: {}", request.getCiyamAtVersion()); + logger.info("codeBytes: {}", request.getCodeBytes()); + logger.info("codeBytes: {}", request.getNumUserStackPages()); + logger.info("codeBytes: {}", request.getDataBytes()); + logger.info("codeBytes: {}", request.getNumCallStackPages()); + logger.info("codeBytes: {}", request.getMinActivationAmount()); + byte[] creationBytes = MachineState.toCreationBytes( + request.getCiyamAtVersion(), + request.getCodeBytes(), + request.getDataBytes(), + request.getNumCallStackPages(), + request.getNumUserStackPages(), + request.getMinActivationAmount() + ); + return Base58.encode(creationBytes); + + } @POST @Operation( diff --git a/src/main/java/org/qortal/data/transaction/CreationRequest.java b/src/main/java/org/qortal/data/transaction/CreationRequest.java index efdfc738..9d50458c 100644 --- a/src/main/java/org/qortal/data/transaction/CreationRequest.java +++ b/src/main/java/org/qortal/data/transaction/CreationRequest.java @@ -1,10 +1,11 @@ package org.qortal.data.transaction; import java.util.Base64; - +import com.fasterxml.jackson.annotation.JsonProperty; public class CreationRequest { private short ciyamAtVersion; + @JsonProperty("codeBytesBase64") private String codeBytesBase64; private String dataBytesBase64; private short numCallStackPages; @@ -24,15 +25,27 @@ public class CreationRequest { } public byte[] getCodeBytes() { - return Base64.getDecoder().decode(this.codeBytesBase64); + if (this.codeBytesBase64 != null) { + return Base64.getDecoder().decode(this.codeBytesBase64); + } + return new byte[0]; } public void setCodeBytesBase64(String codeBytesBase64) { this.codeBytesBase64 = codeBytesBase64; } + public String getCodeBytes2() { + return codeBytesBase64; + + } + + public byte[] getDataBytes() { - return Base64.getDecoder().decode(this.dataBytesBase64); + if (this.dataBytesBase64 != null) { + return Base64.getDecoder().decode(this.dataBytesBase64); + } + return new byte[0]; } public void setDataBytesBase64(String dataBytesBase64) {