From 7658af92fe6148f6140abd7392476152964eba2c Mon Sep 17 00:00:00 2001 From: Eric Warehime Date: Thu, 19 May 2022 16:36:36 -0700 Subject: [PATCH] Rerun code generation based on new models --- .../algosdk/v2/client/algod/GetProof.java | 11 +++ .../algosdk/v2/client/algod/TealCompile.java | 9 +++ .../v2/client/algod/TealDisassemble.java | 68 +++++++++++++++++++ .../algosdk/v2/client/common/AlgodClient.java | 11 +++ .../v2/client/common/IndexerClient.java | 7 +- .../indexer/LookupAccountTransactions.java | 2 +- .../indexer/LookupAssetTransactions.java | 2 +- .../client/indexer/SearchForTransactions.java | 3 +- .../v2/client/model/CompileResponse.java | 8 +++ .../v2/client/model/DisassembleResponse.java | 30 ++++++++ .../algosdk/v2/client/model/Enums.java | 38 ++++++----- .../v2/client/model/ProofResponse.java | 2 +- 12 files changed, 166 insertions(+), 25 deletions(-) create mode 100644 src/main/java/com/algorand/algosdk/v2/client/algod/TealDisassemble.java create mode 100644 src/main/java/com/algorand/algosdk/v2/client/model/DisassembleResponse.java diff --git a/src/main/java/com/algorand/algosdk/v2/client/algod/GetProof.java b/src/main/java/com/algorand/algosdk/v2/client/algod/GetProof.java index d07043feb..6824d0f4c 100644 --- a/src/main/java/com/algorand/algosdk/v2/client/algod/GetProof.java +++ b/src/main/java/com/algorand/algosdk/v2/client/algod/GetProof.java @@ -5,6 +5,7 @@ import com.algorand.algosdk.v2.client.common.Query; import com.algorand.algosdk.v2.client.common.QueryData; import com.algorand.algosdk.v2.client.common.Response; +import com.algorand.algosdk.v2.client.model.Enums; import com.algorand.algosdk.v2.client.model.ProofResponse; @@ -28,6 +29,16 @@ public GetProof(Client client, Long round, String txid) { this.txid = txid; } + /** + * The type of hash function used to create the proof, must be one of: + * sha512_256 + * sha256 + */ + public GetProof hashtype(Enums.Hashtype hashtype) { + addQuery("hashtype", String.valueOf(hashtype)); + return this; + } + /** * Execute the query. * @return the query response object. diff --git a/src/main/java/com/algorand/algosdk/v2/client/algod/TealCompile.java b/src/main/java/com/algorand/algosdk/v2/client/algod/TealCompile.java index aadd2b545..5b0d1008f 100644 --- a/src/main/java/com/algorand/algosdk/v2/client/algod/TealCompile.java +++ b/src/main/java/com/algorand/algosdk/v2/client/algod/TealCompile.java @@ -28,6 +28,15 @@ public TealCompile source(byte[] source) { return this; } + /** + * When set to `true`, returns the source map of the program as a JSON. Defaults to + * `false`. + */ + public TealCompile sourcemap(Boolean sourcemap) { + addQuery("sourcemap", String.valueOf(sourcemap)); + return this; + } + /** * Execute the query. * @return the query response object. diff --git a/src/main/java/com/algorand/algosdk/v2/client/algod/TealDisassemble.java b/src/main/java/com/algorand/algosdk/v2/client/algod/TealDisassemble.java new file mode 100644 index 000000000..ef6a4f5f8 --- /dev/null +++ b/src/main/java/com/algorand/algosdk/v2/client/algod/TealDisassemble.java @@ -0,0 +1,68 @@ +package com.algorand.algosdk.v2.client.algod; + +import com.algorand.algosdk.v2.client.common.Client; +import com.algorand.algosdk.v2.client.common.HttpMethod; +import com.algorand.algosdk.v2.client.common.Query; +import com.algorand.algosdk.v2.client.common.QueryData; +import com.algorand.algosdk.v2.client.common.Response; +import com.algorand.algosdk.v2.client.model.DisassembleResponse; + + +/** + * Given the program bytes, return the TEAL source code in plain text. This + * endpoint is only enabled when a node's configuration file sets + * EnableDeveloperAPI to true. + * /v2/teal/disassemble + */ +public class TealDisassemble extends Query { + + public TealDisassemble(Client client) { + super(client, new HttpMethod("post")); + } + + /** + * TEAL program binary to be disassembled + */ + public TealDisassemble source(byte[] source) { + addToBody(source); + return this; + } + + /** + * Execute the query. + * @return the query response object. + * @throws Exception + */ + @Override + public Response execute() throws Exception { + Response resp = baseExecute(); + resp.setValueType(DisassembleResponse.class); + return resp; + } + + /** + * Execute the query with custom headers, there must be an equal number of keys and values + * or else an error will be generated. + * @param headers an array of header keys + * @param values an array of header values + * @return the query response object. + * @throws Exception + */ + @Override + public Response execute(String[] headers, String[] values) throws Exception { + Response resp = baseExecute(headers, values); + resp.setValueType(DisassembleResponse.class); + return resp; + } + + protected QueryData getRequestString() { + if (qd.bodySegments.isEmpty()) { + throw new RuntimeException("source is not set. It is a required parameter."); + } + addPathSegment(String.valueOf("v2")); + addPathSegment(String.valueOf("teal")); + addPathSegment(String.valueOf("disassemble")); + + return qd; + } +} diff --git a/src/main/java/com/algorand/algosdk/v2/client/common/AlgodClient.java b/src/main/java/com/algorand/algosdk/v2/client/common/AlgodClient.java index e6632efa6..4d2909782 100644 --- a/src/main/java/com/algorand/algosdk/v2/client/common/AlgodClient.java +++ b/src/main/java/com/algorand/algosdk/v2/client/common/AlgodClient.java @@ -21,6 +21,7 @@ import com.algorand.algosdk.v2.client.algod.GetApplicationByID; import com.algorand.algosdk.v2.client.algod.GetAssetByID; import com.algorand.algosdk.v2.client.algod.TealCompile; +import com.algorand.algosdk.v2.client.algod.TealDisassemble; import com.algorand.algosdk.v2.client.algod.TealDryrun; import com.algorand.algosdk.crypto.Address; @@ -240,6 +241,16 @@ public TealCompile TealCompile() { return new TealCompile((Client) this); } + /** + * Given the program bytes, return the TEAL source code in plain text. This + * endpoint is only enabled when a node's configuration file sets + * EnableDeveloperAPI to true. + * /v2/teal/disassemble + */ + public TealDisassemble TealDisassemble() { + return new TealDisassemble((Client) this); + } + /** * Executes TEAL program(s) in context and returns debugging information about the * execution. This endpoint is only enabled when a node's configuration file sets diff --git a/src/main/java/com/algorand/algosdk/v2/client/common/IndexerClient.java b/src/main/java/com/algorand/algosdk/v2/client/common/IndexerClient.java index b2486a905..6661c80d5 100644 --- a/src/main/java/com/algorand/algosdk/v2/client/common/IndexerClient.java +++ b/src/main/java/com/algorand/algosdk/v2/client/common/IndexerClient.java @@ -110,7 +110,7 @@ public LookupAccountCreatedApplications lookupAccountCreatedApplications(Address } /** - * Lookup account transactions. + * Lookup account transactions. Transactions are returned newest to oldest. * /v2/accounts/{account-id}/transactions */ public LookupAccountTransactions lookupAccountTransactions(Address accountId) { @@ -166,7 +166,7 @@ public LookupAssetBalances lookupAssetBalances(Long assetId) { } /** - * Lookup transactions for an asset. + * Lookup transactions for an asset. Transactions are returned oldest to newest. * /v2/assets/{asset-id}/transactions */ public LookupAssetTransactions lookupAssetTransactions(Long assetId) { @@ -190,7 +190,8 @@ public LookupTransaction lookupTransaction(String txid) { } /** - * Search for transactions. + * Search for transactions. Transactions are returned oldest to newest unless the + * address parameter is used, in which case results are returned newest to oldest. * /v2/transactions */ public SearchForTransactions searchForTransactions() { diff --git a/src/main/java/com/algorand/algosdk/v2/client/indexer/LookupAccountTransactions.java b/src/main/java/com/algorand/algosdk/v2/client/indexer/LookupAccountTransactions.java index 0aadb6213..d99ec5b91 100644 --- a/src/main/java/com/algorand/algosdk/v2/client/indexer/LookupAccountTransactions.java +++ b/src/main/java/com/algorand/algosdk/v2/client/indexer/LookupAccountTransactions.java @@ -15,7 +15,7 @@ /** - * Lookup account transactions. + * Lookup account transactions. Transactions are returned newest to oldest. * /v2/accounts/{account-id}/transactions */ public class LookupAccountTransactions extends Query { diff --git a/src/main/java/com/algorand/algosdk/v2/client/indexer/LookupAssetTransactions.java b/src/main/java/com/algorand/algosdk/v2/client/indexer/LookupAssetTransactions.java index ea0cebef2..ede4367b1 100644 --- a/src/main/java/com/algorand/algosdk/v2/client/indexer/LookupAssetTransactions.java +++ b/src/main/java/com/algorand/algosdk/v2/client/indexer/LookupAssetTransactions.java @@ -15,7 +15,7 @@ /** - * Lookup transactions for an asset. + * Lookup transactions for an asset. Transactions are returned oldest to newest. * /v2/assets/{asset-id}/transactions */ public class LookupAssetTransactions extends Query { diff --git a/src/main/java/com/algorand/algosdk/v2/client/indexer/SearchForTransactions.java b/src/main/java/com/algorand/algosdk/v2/client/indexer/SearchForTransactions.java index 22c7dace2..3197b89b0 100644 --- a/src/main/java/com/algorand/algosdk/v2/client/indexer/SearchForTransactions.java +++ b/src/main/java/com/algorand/algosdk/v2/client/indexer/SearchForTransactions.java @@ -15,7 +15,8 @@ /** - * Search for transactions. + * Search for transactions. Transactions are returned oldest to newest unless the + * address parameter is used, in which case results are returned newest to oldest. * /v2/transactions */ public class SearchForTransactions extends Query { diff --git a/src/main/java/com/algorand/algosdk/v2/client/model/CompileResponse.java b/src/main/java/com/algorand/algosdk/v2/client/model/CompileResponse.java index f0ed7b74f..35f245637 100644 --- a/src/main/java/com/algorand/algosdk/v2/client/model/CompileResponse.java +++ b/src/main/java/com/algorand/algosdk/v2/client/model/CompileResponse.java @@ -1,5 +1,6 @@ package com.algorand.algosdk.v2.client.model; +import java.util.HashMap; import java.util.Objects; import com.algorand.algosdk.v2.client.common.PathResponse; @@ -22,6 +23,12 @@ public class CompileResponse extends PathResponse { @JsonProperty("result") public String result; + /** + * JSON of the source map + */ + @JsonProperty("sourcemap") + public HashMap sourcemap; + @Override public boolean equals(Object o) { @@ -31,6 +38,7 @@ public boolean equals(Object o) { CompileResponse other = (CompileResponse) o; if (!Objects.deepEquals(this.hash, other.hash)) return false; if (!Objects.deepEquals(this.result, other.result)) return false; + if (!Objects.deepEquals(this.sourcemap, other.sourcemap)) return false; return true; } diff --git a/src/main/java/com/algorand/algosdk/v2/client/model/DisassembleResponse.java b/src/main/java/com/algorand/algosdk/v2/client/model/DisassembleResponse.java new file mode 100644 index 000000000..468a36a07 --- /dev/null +++ b/src/main/java/com/algorand/algosdk/v2/client/model/DisassembleResponse.java @@ -0,0 +1,30 @@ +package com.algorand.algosdk.v2.client.model; + +import java.util.Objects; + +import com.algorand.algosdk.v2.client.common.PathResponse; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Teal disassembly Result + */ +public class DisassembleResponse extends PathResponse { + + /** + * disassembled Teal code + */ + @JsonProperty("result") + public String result; + + @Override + public boolean equals(Object o) { + + if (this == o) return true; + if (o == null) return false; + + DisassembleResponse other = (DisassembleResponse) o; + if (!Objects.deepEquals(this.result, other.result)) return false; + + return true; + } +} diff --git a/src/main/java/com/algorand/algosdk/v2/client/model/Enums.java b/src/main/java/com/algorand/algosdk/v2/client/model/Enums.java index b2515301c..04ff6e685 100644 --- a/src/main/java/com/algorand/algosdk/v2/client/model/Enums.java +++ b/src/main/java/com/algorand/algosdk/v2/client/model/Enums.java @@ -47,6 +47,26 @@ public String toString() { } } + /** + * The type of hash function used to create the proof, must be one of: + * sha512_256 + * sha256 + */ + public enum Hashtype { + @JsonProperty("sha512_256") SHA512_256("sha512_256"), + @JsonProperty("sha256") SHA256("sha256"); + + final String serializedName; + Hashtype(String name) { + this.serializedName = name; + } + + @Override + public String toString() { + return this.serializedName; + } + } + /** * (apan) defines the what additional actions occur with the transaction. * Valid types: @@ -130,22 +150,4 @@ public String toString() { } } - /** - * Combine with the address parameter to define what type of address to search for. - */ - public enum Hashtype { - @JsonProperty("sumhash") SUMHASH("sumhash"), - @JsonProperty("sha512_256") SHA512_256("sha512_256"); - - final String serializedName; - Hashtype(String name) { - this.serializedName = name; - } - - @Override - public String toString() { - return this.serializedName; - } - } - } diff --git a/src/main/java/com/algorand/algosdk/v2/client/model/ProofResponse.java b/src/main/java/com/algorand/algosdk/v2/client/model/ProofResponse.java index 71b4e8c89..6318e77a3 100644 --- a/src/main/java/com/algorand/algosdk/v2/client/model/ProofResponse.java +++ b/src/main/java/com/algorand/algosdk/v2/client/model/ProofResponse.java @@ -13,8 +13,8 @@ public class ProofResponse extends PathResponse { /** * The type of hash function used to create the proof, must be one of: - * sumhash * sha512_256 + * sha256 */ @JsonProperty("hashtype") public Enums.Hashtype hashtype;