diff --git a/CHANGELOG.md b/CHANGELOG.md index 11e20b0bc..bbd058b58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Pending - feat: sort `ScMap` entries by key in `Scv.toMap` following Soroban runtime ordering rules, as the network requires ScMap keys to be in ascending order. `Scv.toMap` now accepts `Map`; the previous `toMap(LinkedHashMap)` overload is deprecated. +- feat: add `closeTime`, `headerXdr`, and `metadataXdr` to `GetLatestLedgerResponse`. ## 2.2.3 diff --git a/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetLatestLedgerResponse.java b/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetLatestLedgerResponse.java index a049f343a..ca720f636 100644 --- a/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetLatestLedgerResponse.java +++ b/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetLatestLedgerResponse.java @@ -1,6 +1,9 @@ package org.stellar.sdk.responses.sorobanrpc; import lombok.Value; +import org.stellar.sdk.Util; +import org.stellar.sdk.xdr.LedgerCloseMeta; +import org.stellar.sdk.xdr.LedgerHeader; /** * Response for JSON-RPC method getLatestLedger. @@ -16,4 +19,30 @@ public class GetLatestLedgerResponse { Integer protocolVersion; Integer sequence; + + Long closeTime; + + /** The field can be parsed as {@link LedgerHeader} object. */ + String headerXdr; + + /** The field can be parsed as {@link LedgerCloseMeta} object. */ + String metadataXdr; + + /** + * Parses the {@code headerXdr} field from a string to an {@link LedgerHeader} object. + * + * @return the parsed {@link LedgerHeader} object + */ + public LedgerHeader parseHeaderXdr() { + return Util.parseXdr(headerXdr, LedgerHeader::fromXdrBase64); + } + + /** + * Parses the {@code metadataXdr} field from a string to an {@link LedgerCloseMeta} object. + * + * @return the parsed {@link LedgerCloseMeta} object + */ + public LedgerCloseMeta parseMetadataXdr() { + return Util.parseXdr(metadataXdr, LedgerCloseMeta::fromXdrBase64); + } } diff --git a/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetLedgersResponse.java b/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetLedgersResponse.java index c9e3f508f..44a9797b7 100644 --- a/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetLedgersResponse.java +++ b/src/main/java/org/stellar/sdk/responses/sorobanrpc/GetLedgersResponse.java @@ -34,7 +34,7 @@ public static class LedgerInfo { String metadataXdr; /** - * Parses the {@code envelopeXdr} field from a string to an {@link LedgerHeaderHistoryEntry} + * Parses the {@code headerXdr} field from a string to an {@link LedgerHeaderHistoryEntry} * object. * * @return the parsed {@link LedgerHeaderHistoryEntry} object diff --git a/src/test/java/org/stellar/sdk/SorobanServerTest.java b/src/test/java/org/stellar/sdk/SorobanServerTest.java index fe864b9ef..ad7582c21 100644 --- a/src/test/java/org/stellar/sdk/SorobanServerTest.java +++ b/src/test/java/org/stellar/sdk/SorobanServerTest.java @@ -883,10 +883,12 @@ public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) HttpUrl baseUrl = mockWebServer.url(""); SorobanServer server = new SorobanServer(baseUrl.toString()); GetLatestLedgerResponse resp = server.getLatestLedger(); - assertEquals(resp.getId(), "e73d7654b72daa637f396669182c6072549736a9e3b6fcb8e685adb61f8c910a"); - assertEquals(resp.getProtocolVersion().intValue(), 20); - assertEquals(resp.getSequence().intValue(), 24170); - + assertEquals(resp.getId(), "98908807544d6658094c94e00c1cff99e341b96ee1c59abbda39d5f4a3b20cdc"); + assertEquals(resp.getProtocolVersion().intValue(), 25); + assertEquals(resp.getSequence().intValue(), 1283415); + assertEquals(resp.getCloseTime().longValue(), 1772416629L); + assertEquals(resp.parseHeaderXdr().toXdrBase64(), resp.getHeaderXdr()); + assertEquals(resp.parseMetadataXdr().toXdrBase64(), resp.getMetadataXdr()); server.close(); mockWebServer.close(); } diff --git a/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetLatestLedgerDeserializerTest.java b/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetLatestLedgerDeserializerTest.java index 3fb326017..1cf7aeb29 100644 --- a/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetLatestLedgerDeserializerTest.java +++ b/src/test/java/org/stellar/sdk/responses/sorobanrpc/GetLatestLedgerDeserializerTest.java @@ -21,8 +21,15 @@ public void testDeserialize() throws IOException { json, new TypeToken>() {}.getType()); assertEquals( getLatestLedgerResponse.getResult().getId(), - "e73d7654b72daa637f396669182c6072549736a9e3b6fcb8e685adb61f8c910a"); - assertEquals(getLatestLedgerResponse.getResult().getProtocolVersion().intValue(), 20); - assertEquals(getLatestLedgerResponse.getResult().getSequence().intValue(), 24170); + "98908807544d6658094c94e00c1cff99e341b96ee1c59abbda39d5f4a3b20cdc"); + assertEquals(getLatestLedgerResponse.getResult().getProtocolVersion().intValue(), 25); + assertEquals(getLatestLedgerResponse.getResult().getSequence().intValue(), 1283415); + assertEquals(getLatestLedgerResponse.getResult().getCloseTime().longValue(), 1772416629L); + assertEquals( + getLatestLedgerResponse.getResult().parseHeaderXdr().toXdrBase64(), + getLatestLedgerResponse.getResult().getHeaderXdr()); + assertEquals( + getLatestLedgerResponse.getResult().parseMetadataXdr().toXdrBase64(), + getLatestLedgerResponse.getResult().getMetadataXdr()); } } diff --git a/src/test/resources/responses/sorobanrpc/get_latest_ledger.json b/src/test/resources/responses/sorobanrpc/get_latest_ledger.json index 137cb4eb0..554744708 100644 --- a/src/test/resources/responses/sorobanrpc/get_latest_ledger.json +++ b/src/test/resources/responses/sorobanrpc/get_latest_ledger.json @@ -2,8 +2,11 @@ "jsonrpc": "2.0", "id": "198cb1a8-9104-4446-a269-88bf000c2721", "result": { - "id": "e73d7654b72daa637f396669182c6072549736a9e3b6fcb8e685adb61f8c910a", - "protocolVersion": "20", - "sequence": 24170 + "id": "98908807544d6658094c94e00c1cff99e341b96ee1c59abbda39d5f4a3b20cdc", + "protocolVersion": 25, + "sequence": 1283415, + "closeTime": "1772416629", + "headerXdr": "AAAAGTYWd+lOrCsVq+GXQy5TjE97DP9QDwD1T/r+ImC+1XbIZDnn8RGXlzp9MhECy6c1btIVJZ/vov4a9P9sRVVdxN8AAAAAaaTudQAAAAAAAAABAAAAALVdELK7fShO1cA6R6XhtZDJD1eDVUccxFB7voIE0jyLAAAAQNsZy74r8hJxSXw7Z/qQ+68lJXXPbQBR6OdhhqivbXCBI+XiUiqCjQoe9+DvcC6RRO0Ww1kzfWY1xXZd9PabPAW7Hy0+slf43SvgJTpBFa9A48kJHTitL09m2e0L6H5PKMQeR5igl7T4MXIqv/CDip6XT8Ik2a4IkVH7m38vCeOiABOVVw3gtrOnZAAAAAAAd5o4/0oAAAAAAAAAAAAAji4AAABkAExLQAAAAMizXTnFjxaF/8p9DrSQGwJAXpoSmbtVQ+s2/KENuc4WZiERheyhetuu8IJGyZZGr2uO2vPUd9E1QdMyFqhW2N5lWAl22ayL+G5n2OVBAIaRbMe+ox2f7v/gad3RsvnqB6mHyauNviJjTNINDfGUBvxUaSJhI7oAGLFf/lEZIrT7RAAAAAA=", + "metadataXdr": "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" } -} \ No newline at end of file +} diff --git a/src/test/resources/soroban_server/get_latest_ledger.json b/src/test/resources/soroban_server/get_latest_ledger.json index 137cb4eb0..554744708 100644 --- a/src/test/resources/soroban_server/get_latest_ledger.json +++ b/src/test/resources/soroban_server/get_latest_ledger.json @@ -2,8 +2,11 @@ "jsonrpc": "2.0", "id": "198cb1a8-9104-4446-a269-88bf000c2721", "result": { - "id": "e73d7654b72daa637f396669182c6072549736a9e3b6fcb8e685adb61f8c910a", - "protocolVersion": "20", - "sequence": 24170 + "id": "98908807544d6658094c94e00c1cff99e341b96ee1c59abbda39d5f4a3b20cdc", + "protocolVersion": 25, + "sequence": 1283415, + "closeTime": "1772416629", + "headerXdr": "AAAAGTYWd+lOrCsVq+GXQy5TjE97DP9QDwD1T/r+ImC+1XbIZDnn8RGXlzp9MhECy6c1btIVJZ/vov4a9P9sRVVdxN8AAAAAaaTudQAAAAAAAAABAAAAALVdELK7fShO1cA6R6XhtZDJD1eDVUccxFB7voIE0jyLAAAAQNsZy74r8hJxSXw7Z/qQ+68lJXXPbQBR6OdhhqivbXCBI+XiUiqCjQoe9+DvcC6RRO0Ww1kzfWY1xXZd9PabPAW7Hy0+slf43SvgJTpBFa9A48kJHTitL09m2e0L6H5PKMQeR5igl7T4MXIqv/CDip6XT8Ik2a4IkVH7m38vCeOiABOVVw3gtrOnZAAAAAAAd5o4/0oAAAAAAAAAAAAAji4AAABkAExLQAAAAMizXTnFjxaF/8p9DrSQGwJAXpoSmbtVQ+s2/KENuc4WZiERheyhetuu8IJGyZZGr2uO2vPUd9E1QdMyFqhW2N5lWAl22ayL+G5n2OVBAIaRbMe+ox2f7v/gad3RsvnqB6mHyauNviJjTNINDfGUBvxUaSJhI7oAGLFf/lEZIrT7RAAAAAA=", + "metadataXdr": "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" } -} \ No newline at end of file +}