Skip to content

Commit 879aabe

Browse files
committed
Sync with sava-rpc changes. Remove deprecated jupiter v1 token api methods.
1 parent a40757c commit 879aabe

10 files changed

Lines changed: 85 additions & 152 deletions

File tree

gradle/sava.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
productDescription=Solana Ecosystem Web 2.0 Clients
22
javaVersion=24
3-
solanaBOMVersion=24.0.39
3+
solanaBOMVersion=24.3.22

gradle/wrapper/gradle-wrapper.jar

1.65 KB
Binary file not shown.

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

gradlew

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

settings.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pluginManagement {
1010
}
1111

1212
plugins {
13-
id("software.sava.build") version "0.1.26"
13+
id("software.sava.build") version "0.1.36"
1414
}
1515

1616
rootProject.name = "solana-web2"

solana-web2/src/main/java/software/sava/solana/web2/helius/client/http/HeliusJsonRpcClient.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
final class HeliusJsonRpcClient extends JsonRpcHttpClient implements HeliusClient {
2424

2525
static final Duration DEFAULT_REQUEST_TIMEOUT = Duration.ofSeconds(13);
26-
private static final Function<HttpResponse<byte[]>, PriorityFeesEstimates> PRIORITY_FEES = applyResponseResult(PriorityFeesEstimates::parseLevels);
27-
private static final Function<HttpResponse<byte[]>, BigDecimal> PRIORITY_FEE = applyResponseResult(ji -> ji.skipUntil("priorityFeeEstimate").readBigDecimalDropZeroes());
26+
private static final Function<HttpResponse<?>, PriorityFeesEstimates> PRIORITY_FEES = applyGenericResponseResult(PriorityFeesEstimates::parseLevels);
27+
private static final Function<HttpResponse<?>, BigDecimal> PRIORITY_FEE = applyGenericResponseResult(ji -> ji.skipUntil("priorityFeeEstimate").readBigDecimalDropZeroes());
2828

2929
private final AtomicLong id;
3030

@@ -33,15 +33,17 @@ final class HeliusJsonRpcClient extends JsonRpcHttpClient implements HeliusClien
3333
final Duration requestTimeout,
3434
final UnaryOperator<HttpRequest.Builder> extendRequest,
3535
final Predicate<HttpResponse<byte[]>> applyResponse) {
36-
super(endpoint, httpClient, requestTimeout, extendRequest, applyResponse);
36+
super(endpoint, httpClient, requestTimeout, extendRequest, applyResponse, null);
3737
this.id = new AtomicLong(System.currentTimeMillis());
3838
}
3939

4040
@Override
4141
public CompletableFuture<PriorityFeesEstimates> getPriorityFeeEstimate(final String params) {
4242
return sendPostRequest(PRIORITY_FEES, String.format("""
43-
{"jsonrpc":"2.0","id":%d,"method":"getPriorityFeeEstimate","params":[{%s}]}""",
44-
id.incrementAndGet(), params));
43+
{"jsonrpc":"2.0","id":%d,"method":"getPriorityFeeEstimate","params":[{%s}]}""",
44+
id.incrementAndGet(), params
45+
)
46+
);
4547
}
4648

4749
@Override
@@ -83,7 +85,8 @@ public CompletableFuture<PriorityFeesEstimates> getTransactionPriorityFeeEstimat
8385
public CompletableFuture<BigDecimal> getRecommendedPriorityFeeEstimate(final String params) {
8486
final var body = String.format("""
8587
{"jsonrpc":"2.0","id":%d,"method":"getPriorityFeeEstimate","params":[{%s}]}""",
86-
id.incrementAndGet(), params);
88+
id.incrementAndGet(), params
89+
);
8790
return sendPostRequest(PRIORITY_FEE, body);
8891
}
8992

solana-web2/src/main/java/software/sava/solana/web2/jito/client/http/JitoJsonRpcClient.java

Lines changed: 36 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package software.sava.solana.web2.jito.client.http;
22

33
import software.sava.core.encoding.Base58;
4-
import software.sava.rpc.json.http.client.JsonRpcHttpClient;
4+
import software.sava.rpc.json.http.client.BaseSolanaJsonRpcClient;
55
import software.sava.rpc.json.http.request.Commitment;
66
import software.sava.solana.web2.jito.client.http.response.BundleStatus;
77
import software.sava.solana.web2.jito.client.http.response.SendTxResult;
@@ -13,7 +13,6 @@
1313
import java.time.Duration;
1414
import java.util.*;
1515
import java.util.concurrent.CompletableFuture;
16-
import java.util.concurrent.atomic.AtomicLong;
1716
import java.util.function.Function;
1817
import java.util.function.Predicate;
1918
import java.util.function.UnaryOperator;
@@ -22,28 +21,26 @@
2221
import static java.lang.String.format;
2322
import static systems.comodal.jsoniter.ValueType.STRING;
2423

25-
final class JitoJsonRpcClient extends JsonRpcHttpClient implements JitoClient {
24+
final class JitoJsonRpcClient extends BaseSolanaJsonRpcClient implements JitoClient {
2625

27-
private static final Function<HttpResponse<byte[]>, BundleStatus> BUNDLE_STATUS_PARSER = applyResponseValue(BundleStatus::parseStatus);
28-
private static final Function<HttpResponse<byte[]>, Map<String, BundleStatus>> BUNDLE_STATUSES_PARSER = applyResponseValue(BundleStatus::parseStatuses);
29-
private static final Function<HttpResponse<byte[]>, SendTxResult> SEND_TX_RESPONSE_PARSER = applyResponseResult(
30-
(response, ji) -> new SendTxResult(ji.readString(), response.headers().firstValue("x-bundle-id").orElse(null)));
31-
private static final Function<HttpResponse<byte[]>, String> SEND_BUNDLE_RESPONSE_PARSER = applyResponseResult(
32-
(response, ji) -> ji.whatIsNext() == STRING ? ji.readString() : null);
33-
private static final Function<HttpResponse<byte[]>, List<String>> TIP_ACCOUNTS_PARSER = applyResponseResult(
34-
(response, ji) -> {
26+
private static final Function<HttpResponse<?>, BundleStatus> BUNDLE_STATUS_PARSER = applyGenericResponseValue(BundleStatus::parseStatus);
27+
private static final Function<HttpResponse<?>, Map<String, BundleStatus>> BUNDLE_STATUSES_PARSER = applyGenericResponseValue(BundleStatus::parseStatuses);
28+
private static final Function<HttpResponse<?>, SendTxResult> SEND_TX_RESPONSE_PARSER = applyGenericResponseResult(
29+
(response, _, ji) -> new SendTxResult(ji.readString(), response.headers().firstValue("x-bundle-id").orElse(null)));
30+
private static final Function<HttpResponse<?>, String> SEND_BUNDLE_RESPONSE_PARSER = applyGenericResponseResult(
31+
ji -> ji.whatIsNext() == STRING ? ji.readString() : null);
32+
private static final Function<HttpResponse<?>, List<String>> TIP_ACCOUNTS_PARSER = applyGenericResponseResult(
33+
ji -> {
3534
final var tipAccount = new ArrayList<String>();
3635
while (ji.readArray()) {
3736
tipAccount.add(ji.readString());
3837
}
3938
return List.copyOf(tipAccount);
4039
});
4140

42-
private final AtomicLong id;
4341
private final URI bundlesURI;
4442
private final URI transactionsURI;
4543
private final URI bundlyOnlyTxURI;
46-
private final Commitment defaultCommitment;
4744

4845
private JitoJsonRpcClient(final URI endpoint,
4946
final HttpClient httpClient,
@@ -56,13 +53,13 @@ private JitoJsonRpcClient(final URI endpoint,
5653
httpClient,
5754
requestTimeout,
5855
extendRequest,
59-
applyResponse
56+
applyResponse,
57+
null,
58+
defaultCommitment
6059
);
6160
this.bundlesURI = endpoint.resolve("/api/v1/bundles");
6261
this.transactionsURI = endpoint.resolve("/api/v1/transactions");
6362
this.bundlyOnlyTxURI = this.transactionsURI.resolve("/api/v1/transactions?bundleOnly=true");
64-
this.id = new AtomicLong(System.currentTimeMillis());
65-
this.defaultCommitment = defaultCommitment;
6663
}
6764

6865
static JitoJsonRpcClient createClient(final URI endpoint,
@@ -91,52 +88,65 @@ static JitoJsonRpcClient createClient(final URI endpoint,
9188
@Override
9289
public CompletableFuture<List<String>> getTipAccounts() {
9390
return sendPostRequest(bundlesURI, TIP_ACCOUNTS_PARSER, format("""
94-
{"jsonrpc":"2.0","id":%d,"method":"getTipAccounts","params":[]}""", id.incrementAndGet()));
91+
{"jsonrpc":"2.0","id":%d,"method":"getTipAccounts","params":[]}""", id.incrementAndGet()
92+
)
93+
);
9594
}
9695

9796
@Override
9897
public CompletableFuture<BundleStatus> getBundleStatus(final String bundleId) {
9998
return sendPostRequest(bundlesURI, BUNDLE_STATUS_PARSER, format("""
100-
{"jsonrpc":"2.0","id":%d,"method":"getBundleStatuses","params":[["%s"]]}""", id.incrementAndGet(), bundleId));
99+
{"jsonrpc":"2.0","id":%d,"method":"getBundleStatuses","params":[["%s"]]}""", id.incrementAndGet(), bundleId
100+
)
101+
);
101102
}
102103

103104
@Override
104105
public CompletableFuture<Map<String, BundleStatus>> getBundleStatuses(final Collection<String> bundleIds) {
105106
return sendPostRequest(bundlesURI, BUNDLE_STATUSES_PARSER, format("""
106-
{"jsonrpc":"2.0","id":%d,"method":"getBundleStatuses","params":[["%s"]]}""", id.incrementAndGet(), String.join("\",\"", bundleIds)));
107+
{"jsonrpc":"2.0","id":%d,"method":"getBundleStatuses","params":[["%s"]]}""", id.incrementAndGet(), String.join("\",\"", bundleIds)
108+
)
109+
);
107110
}
108111

109112
@Override
110113
public CompletableFuture<SendTxResult> sendBundleOnly(final Commitment preflightCommitment,
111114
final String base64SignedTx,
112115
final int maxRetries) {
113116
return sendPostRequest(bundlyOnlyTxURI, SEND_TX_RESPONSE_PARSER, format("""
114-
{"jsonrpc":"2.0","id":%d,"method":"sendTransaction","params":["%s",{"encoding":"base64","skipPreflight":true,"preflightCommitment":"%s","maxRetries":%d}]}""",
115-
id.incrementAndGet(), base64SignedTx, preflightCommitment.getValue(), maxRetries));
117+
{"jsonrpc":"2.0","id":%d,"method":"sendTransaction","params":["%s",{"encoding":"base64","skipPreflight":true,"preflightCommitment":"%s","maxRetries":%d}]}""",
118+
id.incrementAndGet(), base64SignedTx, preflightCommitment.getValue(), maxRetries
119+
)
120+
);
116121
}
117122

118123
@Override
119124
public CompletableFuture<SendTxResult> sendTransactionSkipPreflight(final Commitment preflightCommitment,
120125
final String base64SignedTx,
121126
final int maxRetries) {
122127
return sendPostRequest(transactionsURI, SEND_TX_RESPONSE_PARSER, format("""
123-
{"jsonrpc":"2.0","id":%d,"method":"sendTransaction","params":["%s",{"encoding":"base64","skipPreflight":true,"preflightCommitment":"%s","maxRetries":%d}]}""",
124-
id.incrementAndGet(), base64SignedTx, preflightCommitment.getValue(), maxRetries));
128+
{"jsonrpc":"2.0","id":%d,"method":"sendTransaction","params":["%s",{"encoding":"base64","skipPreflight":true,"preflightCommitment":"%s","maxRetries":%d}]}""",
129+
id.incrementAndGet(), base64SignedTx, preflightCommitment.getValue(), maxRetries
130+
)
131+
);
125132
}
126133

127134
@Override
128135
public CompletableFuture<SendTxResult> sendTransaction(final Commitment preflightCommitment,
129136
final String base64SignedTx,
130137
final int maxRetries) {
131138
return sendPostRequest(transactionsURI, SEND_TX_RESPONSE_PARSER, format("""
132-
{"jsonrpc":"2.0","id":%d,"method":"sendTransaction","params":["%s",{"encoding":"base64","preflightCommitment":"%s","maxRetries":%d}]}""",
133-
id.incrementAndGet(), base64SignedTx, preflightCommitment.getValue(), maxRetries));
139+
{"jsonrpc":"2.0","id":%d,"method":"sendTransaction","params":["%s",{"encoding":"base64","preflightCommitment":"%s","maxRetries":%d}]}""",
140+
id.incrementAndGet(), base64SignedTx, preflightCommitment.getValue(), maxRetries
141+
)
142+
);
134143
}
135144

136145
@Override
137146
public CompletableFuture<String> sendBundle(final String base58SignedTransactions) {
138147
final var body = String.format("""
139-
{"jsonrpc":"2.0","id":%d,"method":"sendBundle","params":[["%s"]]}""", id.incrementAndGet(), base58SignedTransactions);
148+
{"jsonrpc":"2.0","id":%d,"method":"sendBundle","params":[["%s"]]}""", id.incrementAndGet(), base58SignedTransactions
149+
);
140150
return sendPostRequest(transactionsURI, SEND_BUNDLE_RESPONSE_PARSER, body);
141151
}
142152

solana-web2/src/main/java/software/sava/solana/web2/jupiter/client/http/JupiterClient.java

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import software.sava.core.accounts.PublicKey;
44
import software.sava.solana.web2.jupiter.client.http.request.JupiterQuoteRequest;
5-
import software.sava.solana.web2.jupiter.client.http.request.JupiterTokenTag;
65
import software.sava.solana.web2.jupiter.client.http.response.*;
76

87
import java.math.BigInteger;
@@ -178,30 +177,6 @@ CompletableFuture<Map<PublicKey, JupiterTokenV2>> tokensForCategory(final String
178177

179178
CompletableFuture<Map<PublicKey, JupiterTokenV2>> recentTokens();
180179

181-
@Deprecated
182-
CompletableFuture<TokenContext> token(final PublicKey mint);
183-
184-
@Deprecated
185-
CompletableFuture<Map<PublicKey, TokenContext>> allTokens();
186-
187-
CompletableFuture<List<PublicKey>> tradableMints();
188-
189-
@Deprecated
190-
CompletableFuture<Map<PublicKey, TokenContext>> tokenMap(final JupiterTokenTag tag);
191-
192-
@Deprecated
193-
CompletableFuture<Map<PublicKey, TokenContext>> tokenMap(final Collection<JupiterTokenTag> tags);
194-
195-
@Deprecated
196-
default CompletableFuture<Map<PublicKey, TokenContext>> verifiedTokenMap() {
197-
return tokenMap(JupiterTokenTag.verified);
198-
}
199-
200-
@Deprecated
201-
default CompletableFuture<Map<PublicKey, TokenContext>> liquidStakingTokens() {
202-
return tokenMap(JupiterTokenTag.lst);
203-
}
204-
205180
CompletableFuture<Map<String, PublicKey>> getDexLabelToProgramIdMap();
206181

207182
CompletableFuture<JupiterSwapTx> swap(final StringBuilder jsonBodyBuilder, final JupiterQuote jupiterQuote);

0 commit comments

Comments
 (0)