Skip to content

Commit 2d01f11

Browse files
committed
WIP better way to handle contract calls/results for evaluation
1 parent 4ad97a3 commit 2d01f11

File tree

21 files changed

+290
-131
lines changed

21 files changed

+290
-131
lines changed
Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package com.syntifi.near.api.common.model.common;
22

3+
import com.fasterxml.jackson.annotation.JsonIgnore;
34
import com.fasterxml.jackson.annotation.JsonValue;
4-
import lombok.NoArgsConstructor;
5+
import lombok.AccessLevel;
6+
import lombok.Builder;
7+
import lombok.Getter;
8+
import lombok.ToString;
59

610
import java.util.Arrays;
711
import java.util.Base64;
@@ -13,24 +17,25 @@
1317
* @author Andre Bertolace
1418
* @since 0.2.0
1519
*/
16-
@NoArgsConstructor
20+
@Getter
21+
@Builder(access = AccessLevel.PRIVATE)
22+
@ToString
1723
public class Base64String {
1824
@JsonValue
1925
private String encodedString;
2026

21-
public Base64String(String value) {
22-
setEncodedString(value);
23-
}
24-
25-
public String getDecodedString() {
26-
return Arrays.toString(Base64.getDecoder().decode(this.encodedString));
27-
}
27+
@JsonIgnore
28+
private String decodedString;
2829

29-
public String getEncodedString() {
30-
return encodedString;
30+
public static Base64String fromDecodedString(String value) {
31+
return Base64String.builder()
32+
.decodedString(value)
33+
.encodedString(Base64.getEncoder().encodeToString(value.getBytes())).build();
3134
}
3235

33-
public void setEncodedString(String decodedString) {
34-
this.encodedString = Base64.getEncoder().encodeToString(decodedString.getBytes());
36+
public static Base64String fromEncodedString(String value) {
37+
return Base64String.builder()
38+
.decodedString(Arrays.toString(Base64.getDecoder().decode(value)))
39+
.encodedString(value).build();
3540
}
3641
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.syntifi.near.api.common.model.common;
2+
3+
import com.fasterxml.jackson.annotation.JsonIgnore;
4+
import com.syntifi.near.api.common.service.NearObjectMapper;
5+
6+
import java.io.IOException;
7+
8+
public interface ConvertibleFromJsonToObject {
9+
@JsonIgnore
10+
byte[] getJson();
11+
12+
default <T> T toResultObject(Class<T> clazz) throws IOException {
13+
return NearObjectMapper.INSTANCE.readValue(getJson(), clazz);
14+
}
15+
}

near-java-api-common/src/main/java/com/syntifi/near/api/common/service/NearObjectMapper.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@
1010
* @since 0.0.1
1111
*/
1212
public class NearObjectMapper extends ObjectMapper {
13+
public static final ObjectMapper INSTANCE = new NearObjectMapper();
1314
}

near-java-api-helper/src/main/java/com/syntifi/near/api/helper/service/NearHelperService.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.syntifi.near.api.helper.service;
22

3-
import com.fasterxml.jackson.databind.ObjectMapper;
43
import com.syntifi.near.api.common.service.NearObjectMapper;
54
import com.syntifi.near.api.helper.model.NearValue;
65
import com.syntifi.near.api.helper.model.RecentActivity;
@@ -45,8 +44,6 @@ public interface NearHelperService {
4544
* @return the helper service instance
4645
*/
4746
static NearHelperService usingPeer(String url) {
48-
ObjectMapper mapper = new NearObjectMapper();
49-
5047
Headers customHeaders = new Headers.Builder()
5148
.add("Content-Type", "application/json")
5249
.add("Cache-Control", "no-cache")
@@ -57,7 +54,7 @@ static NearHelperService usingPeer(String url) {
5754
.addInterceptor(
5855
chain -> chain.proceed(chain.request().newBuilder().headers(customHeaders).build())).build())
5956
.baseUrl("https://" + url)
60-
.addConverterFactory(JacksonConverterFactory.create(mapper))
57+
.addConverterFactory(JacksonConverterFactory.create(NearObjectMapper.INSTANCE))
6158
.build();
6259

6360
return retrofit.create(NearHelperService.class);

near-java-api-indexer/src/main/java/com/syntifi/near/api/indexer/service/NearIndexerService.java

Lines changed: 23 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.syntifi.near.api.indexer.service;
22

3-
import com.fasterxml.jackson.databind.ObjectMapper;
43
import com.syntifi.near.api.common.service.NearObjectMapper;
54
import com.syntifi.near.api.indexer.model.AccountIdList;
65
import com.syntifi.near.api.indexer.model.StakingDeposit;
@@ -23,31 +22,6 @@
2322
*/
2423
public interface NearIndexerService {
2524

26-
/**
27-
* NearIndexerService builder
28-
*
29-
* @param url the indexer url to connect to
30-
* @return the indexer service instance
31-
*/
32-
static NearIndexerService usingPeer(String url) {
33-
ObjectMapper mapper = new NearObjectMapper();
34-
35-
Headers customHeaders = new Headers.Builder()
36-
.add("Content-Type", "application/json")
37-
.add("Cache-Control", "no-cache")
38-
.build();
39-
40-
Retrofit retrofit = new Retrofit.Builder()
41-
.client(new OkHttpClient.Builder()
42-
.addInterceptor(
43-
chain -> chain.proceed(chain.request().newBuilder().headers(customHeaders).build())).build())
44-
.baseUrl("https://" + url)
45-
.addConverterFactory(JacksonConverterFactory.create(mapper))
46-
.build();
47-
48-
return retrofit.create(NearIndexerService.class);
49-
}
50-
5125
/**
5226
* Fetches all likely NFTs given an accountId
5327
*
@@ -74,4 +48,27 @@ static NearIndexerService usingPeer(String url) {
7448
*/
7549
@GET("staking-deposits/{accountId}")
7650
Call<List<StakingDeposit>> getStakingDeposits(@Path("accountId") String accountId);
51+
52+
/**
53+
* NearIndexerService builder
54+
*
55+
* @param url the indexer url to connect to
56+
* @return the indexer service instance
57+
*/
58+
static NearIndexerService usingPeer(String url) {
59+
Headers customHeaders = new Headers.Builder()
60+
.add("Content-Type", "application/json")
61+
.add("Cache-Control", "no-cache")
62+
.build();
63+
64+
Retrofit retrofit = new Retrofit.Builder()
65+
.client(new OkHttpClient.Builder()
66+
.addInterceptor(
67+
chain -> chain.proceed(chain.request().newBuilder().headers(customHeaders).build())).build())
68+
.baseUrl("https://" + url)
69+
.addConverterFactory(JacksonConverterFactory.create(NearObjectMapper.INSTANCE))
70+
.build();
71+
72+
return retrofit.create(NearIndexerService.class);
73+
}
7774
}

near-java-api-rpc/src/main/java/com/syntifi/near/api/rpc/model/contract/ContractFunctionCallResult.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.fasterxml.jackson.annotation.JsonInclude;
44
import com.fasterxml.jackson.annotation.JsonProperty;
55
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
6+
import com.syntifi.near.api.common.model.common.ConvertibleFromJsonToObject;
67
import com.syntifi.near.api.common.model.common.EncodedHash;
78
import com.syntifi.near.api.rpc.json.serializer.ByteArraySerializer;
89
import lombok.AllArgsConstructor;
@@ -27,7 +28,7 @@
2728
@AllArgsConstructor
2829
@Builder
2930
@ToString
30-
public class ContractFunctionCallResult {
31+
public class ContractFunctionCallResult implements ConvertibleFromJsonToObject {
3132
@JsonProperty("result")
3233
@JsonInclude(JsonInclude.Include.NON_NULL)
3334
@JsonSerialize(using = ByteArraySerializer.class)
@@ -45,4 +46,9 @@ public class ContractFunctionCallResult {
4546
@JsonProperty("error")
4647
@JsonInclude(JsonInclude.Include.NON_NULL)
4748
private String error;
49+
50+
@Override
51+
public byte[] getJson() {
52+
return getResult();
53+
}
4854
}

near-java-api-rpc/src/main/java/com/syntifi/near/api/rpc/model/contract/NFTMetadata.java

Lines changed: 0 additions & 42 deletions
This file was deleted.

near-java-api-rpc/src/main/java/com/syntifi/near/api/rpc/service/NearRpcObjectMapper.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
* @since 0.0.1
1616
*/
1717
public class NearRpcObjectMapper extends NearObjectMapper {
18-
public NearRpcObjectMapper() {
18+
public static final ObjectMapper INSTANCE = new NearObjectMapper();
19+
20+
private NearRpcObjectMapper() {
1921
super();
2022

2123
coercionConfigFor(SuccessReceiptIdStatus.class)

near-java-api-rpc/src/main/java/com/syntifi/near/api/rpc/service/NearService.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import com.googlecode.jsonrpc4j.JsonRpcParam;
77
import com.googlecode.jsonrpc4j.JsonRpcParamsPassMode;
88
import com.googlecode.jsonrpc4j.ProxyUtil;
9-
import com.syntifi.near.api.common.service.NearObjectMapper;
109
import com.syntifi.near.api.rpc.model.accesskey.AccessKey;
1110
import com.syntifi.near.api.rpc.model.accesskey.AccessKeyChanges;
1211
import com.syntifi.near.api.rpc.model.accesskey.AccessKeyList;
@@ -31,7 +30,6 @@
3130
import com.syntifi.near.api.rpc.model.transaction.Receipt;
3231
import com.syntifi.near.api.rpc.model.transaction.TransactionAwait;
3332
import com.syntifi.near.api.rpc.model.transaction.TransactionStatus;
34-
import com.syntifi.near.api.rpc.service.exception.NearServiceExceptionResolver;
3533
import com.syntifi.near.api.rpc.service.exception.NearServiceException;
3634
import com.syntifi.near.api.rpc.service.exception.NearServiceExceptionResolver;
3735

@@ -839,11 +837,10 @@ ContractFunctionCallResult callContractFunction(@JsonRpcParam("block_id") long b
839837
* @throws MalformedURLException thrown when url is invalid or unparseable
840838
*/
841839
static NearService usingPeer(String url) throws MalformedURLException {
842-
NearObjectMapper objectMapper = new NearRpcObjectMapper();
843840
Map<String, String> customHeaders = new TreeMap<>();
844841
customHeaders.put("Content-Type", "application/json");
845842

846-
JsonRpcHttpClient client = new JsonRpcHttpClient(objectMapper, new URL("https://" + url),
843+
JsonRpcHttpClient client = new JsonRpcHttpClient(NearRpcObjectMapper.INSTANCE, new URL("https://" + url),
847844
customHeaders);
848845

849846
client.setExceptionResolver(new NearServiceExceptionResolver());

near-java-api-rpc/src/main/java/com/syntifi/near/api/rpc/service/contract/AccountIdParam.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.fasterxml.jackson.annotation.JsonProperty;
44
import lombok.AllArgsConstructor;
5-
import lombok.Builder;
65
import lombok.Getter;
76
import lombok.Setter;
87

@@ -16,8 +15,7 @@
1615
@Getter
1716
@Setter
1817
@AllArgsConstructor
19-
@Builder
20-
public class AccountIdParam {
18+
public class AccountIdParam implements ConvertibleToBase64String {
2119
@JsonProperty("account_id")
2220
private String accountId;
2321
}

0 commit comments

Comments
 (0)