Skip to content

Commit ba245c6

Browse files
committed
feat: add getNormalizedMoveStruct api
Signed-off-by: grapebaba <281165273@qq.com>
1 parent e21de44 commit ba245c6

File tree

5 files changed

+88
-0
lines changed

5 files changed

+88
-0
lines changed

src/integrationTest/java/io/sui/SuiClientImplIntTests.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import io.sui.models.objects.MoveFunctionArgType;
3232
import io.sui.models.objects.MoveNormalizedFunction;
3333
import io.sui.models.objects.MoveNormalizedModule;
34+
import io.sui.models.objects.MoveNormalizedStruct;
3435
import io.sui.models.objects.SuiObjectInfo;
3536
import io.sui.models.transactions.TransactionResponse;
3637
import java.util.List;
@@ -402,4 +403,21 @@ void getNormalizedMoveModule() throws ExecutionException, InterruptedException {
402403
// assertEquals("Store",
403404
// res.get().getStructs().get("Bag").getAbilities().getAbilities().get(0));
404405
}
406+
407+
/**
408+
* Gets normalized move struct.
409+
*
410+
* @throws ExecutionException the execution exception
411+
* @throws InterruptedException the interrupted exception
412+
*/
413+
@Test
414+
@DisplayName("Test getNormalizedMoveStruct.")
415+
void getNormalizedMoveStruct() throws ExecutionException, InterruptedException {
416+
CompletableFuture<MoveNormalizedStruct> res =
417+
client.getNormalizedMoveStruct("0x0000000000000000000000000000000000000002", "bag", "Bag");
418+
System.out.println(res.get());
419+
// assertEquals("Store", res.get().getAbilities().getAbilities().get(0));
420+
// assertEquals("size", res.get().getFields().get(1).getName());
421+
// assertEquals(TypeMoveNormalizedType.U64, res.get().getFields().get(1).getType_());
422+
}
405423
}

src/main/java/io/sui/SuiClient.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import io.sui.models.objects.MoveFunctionArgType;
2626
import io.sui.models.objects.MoveNormalizedFunction;
2727
import io.sui.models.objects.MoveNormalizedModule;
28+
import io.sui.models.objects.MoveNormalizedStruct;
2829
import io.sui.models.objects.SuiObjectInfo;
2930
import io.sui.models.transactions.TransactionResponse;
3031
import java.util.List;
@@ -154,4 +155,7 @@ CompletableFuture<MoveNormalizedFunction> getNormalizedMoveFunction(
154155
* @return the normalized move module
155156
*/
156157
CompletableFuture<MoveNormalizedModule> getNormalizedMoveModule(String suiPackage, String module);
158+
159+
CompletableFuture<MoveNormalizedStruct> getNormalizedMoveStruct(
160+
String suiPackage, String module, String struct);
157161
}

src/main/java/io/sui/SuiClientImpl.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import io.sui.models.objects.MoveFunctionArgType;
3131
import io.sui.models.objects.MoveNormalizedFunction;
3232
import io.sui.models.objects.MoveNormalizedModule;
33+
import io.sui.models.objects.MoveNormalizedStruct;
3334
import io.sui.models.objects.SuiObjectInfo;
3435
import io.sui.models.transactions.TransactionResponse;
3536
import java.lang.reflect.Type;
@@ -174,6 +175,18 @@ public CompletableFuture<MoveNormalizedModule> getNormalizedMoveModule(
174175
new TypeToken<MoveNormalizedModule>() {}.getType());
175176
}
176177

178+
@Override
179+
public CompletableFuture<MoveNormalizedStruct> getNormalizedMoveStruct(
180+
String suiPackage, String module, String struct) {
181+
final JsonRpc20Request request =
182+
createJsonRpc20Request(
183+
"sui_getNormalizedMoveStruct", Lists.newArrayList(suiPackage, module, struct));
184+
return call(
185+
"/sui_getNormalizedMoveStruct",
186+
request,
187+
new TypeToken<MoveNormalizedStruct>() {}.getType());
188+
}
189+
177190
private JsonRpc20Request createJsonRpc20Request(String method, List<?> params) {
178191
final JsonRpc20Request request = new JsonRpc20Request();
179192
request.setId(jsonRpcClientProvider.nextId());

src/test/java/io/sui/SuiClientImplTests.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,10 @@
4444
import io.sui.models.objects.MoveFunctionArgType.PureFunctionMoveFunctionArgType;
4545
import io.sui.models.objects.MoveNormalizedFunction;
4646
import io.sui.models.objects.MoveNormalizedModule;
47+
import io.sui.models.objects.MoveNormalizedStruct;
4748
import io.sui.models.objects.MoveNormalizedType.MoveNormalizedStructType;
4849
import io.sui.models.objects.MoveNormalizedType.MutableReferenceMoveNormalizedType;
50+
import io.sui.models.objects.MoveNormalizedType.TypeMoveNormalizedType;
4951
import io.sui.models.objects.MoveVisibility;
5052
import io.sui.models.objects.ObjectStatus;
5153
import io.sui.models.objects.SuiData;
@@ -200,6 +202,10 @@ public MockResponse dispatch(RecordedRequest request) {
200202
if ("/sui_getNormalizedMoveModule".equals(request.getPath())) {
201203
return getMockResponse("mockdata/getNormalizedMoveModule.json");
202204
}
205+
206+
if ("/sui_getNormalizedMoveStruct".equals(request.getPath())) {
207+
return getMockResponse("mockdata/getNormalizedMoveStruct.json");
208+
}
203209
return new MockResponse().setResponseCode(404);
204210
}
205211
};
@@ -589,4 +595,21 @@ void getNormalizedMoveModule() throws ExecutionException, InterruptedException {
589595
MoveVisibility.Public, res.get().getExposed_functions().get("borrow").getVisibility());
590596
assertEquals("Store", res.get().getStructs().get("Bag").getAbilities().getAbilities().get(0));
591597
}
598+
599+
/**
600+
* Gets normalized move struct.
601+
*
602+
* @throws ExecutionException the execution exception
603+
* @throws InterruptedException the interrupted exception
604+
*/
605+
@Test
606+
@DisplayName("Test getNormalizedMoveStruct.")
607+
void getNormalizedMoveStruct() throws ExecutionException, InterruptedException {
608+
CompletableFuture<MoveNormalizedStruct> res =
609+
client.getNormalizedMoveStruct("0x0000000000000000000000000000000000000002", "bag", "Bag");
610+
System.out.println(res.get());
611+
assertEquals("Store", res.get().getAbilities().getAbilities().get(0));
612+
assertEquals("size", res.get().getFields().get(1).getName());
613+
assertEquals(TypeMoveNormalizedType.U64, res.get().getFields().get(1).getType_());
614+
}
592615
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"jsonrpc": "2.0",
3+
"result": {
4+
"abilities": {
5+
"abilities": [
6+
"Store",
7+
"Key"
8+
]
9+
},
10+
"type_parameters": [],
11+
"fields": [
12+
{
13+
"name": "id",
14+
"type_": {
15+
"Struct": {
16+
"address": "0x2",
17+
"module": "object",
18+
"name": "UID",
19+
"type_arguments": []
20+
}
21+
}
22+
},
23+
{
24+
"name": "size",
25+
"type_": "U64"
26+
}
27+
]
28+
},
29+
"id": 1
30+
}

0 commit comments

Comments
 (0)