Skip to content

Commit

Permalink
only support base64 response encoding for getTransaction.
Browse files Browse the repository at this point in the history
  • Loading branch information
jpe7s committed Oct 11, 2024
1 parent bf16ccc commit bfbcf7c
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ record JsonRpcResultParseController<R>(Function<JsonIterator, R> parser) impleme

@Override
public R apply(final HttpResponse<byte[]> httpResponse) {
// System.out.println(new String(httpResponse.body()));
try {
final var ji = JsonRpcHttpClient.createJsonIterator(httpResponse);
return parser.apply(ji);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -735,8 +735,8 @@ public CompletableFuture<Tx> getTransaction(final Commitment commitment,
? ""
: String.format("\"maxSupportedTransactionVersion\":%d,", maxSupportedTransactionVersion);
return sendPostRequest(TRANSACTION, format("""
{"jsonrpc":"2.0","id":%d,"method":"getTransaction","params":["%s",{"commitment":"%s",%s"encoding":"%s"}]}""",
id.incrementAndGet(), txSignature, commitment.getValue(), maxVersionParam, encoding));
{"jsonrpc":"2.0","id":%d,"method":"getTransaction","params":["%s",{"commitment":"%s",%s"encoding":"base64"}]}""",
id.incrementAndGet(), txSignature, commitment.getValue(), maxVersionParam));
}

@Override
Expand Down
49 changes: 4 additions & 45 deletions rpc/src/main/java/software/sava/rpc/json/http/response/Tx.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
package software.sava.rpc.json.http.response;

import software.sava.core.encoding.Base58;
import systems.comodal.jsoniter.ContextFieldBufferPredicate;
import systems.comodal.jsoniter.JsonException;
import systems.comodal.jsoniter.JsonIterator;
import systems.comodal.jsoniter.ValueType;

import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
import java.util.OptionalLong;

Expand All @@ -26,34 +22,6 @@ public static Tx parse(final JsonIterator ji) {
return ji.testObject(new Builder(), PARSER).create();
}

private static final ContextFieldBufferPredicate<Builder> MSG_PARSER = (builder, buf, offset, len, ji) -> {
if (fieldEquals("accountKeys", buf, offset, len)) {
builder.accountKeys(AccountKey.parseAccounts(ji));
} else if (fieldEquals("instructions", buf, offset, len)) {
builder.instructions(TxParsedInstruction.parsedInstructions(ji));
} else if (fieldEquals("recentBlockhash", buf, offset, len)) {
builder.recentBlockHash(ji.readString());
} else {
ji.skip();
}
return true;
};

private static final ContextFieldBufferPredicate<Builder> TX_PARSER = (builder, buf, offset, len, ji) -> {
if (fieldEquals("signatures", buf, offset, len)) {
final var signatures = new ArrayList<String>();
while (ji.readArray()) {
signatures.add(ji.readString());
}
builder.signatures(signatures);
} else if (fieldEquals("message", buf, offset, len)) {
ji.testObject(builder, MSG_PARSER);
} else {
ji.skip();
}
return true;
};

private static final ContextFieldBufferPredicate<Builder> PARSER = (builder, buf, offset, len, ji) -> {
if (fieldEquals("slot", buf, offset, len)) {
builder.slot(ji.readInt());
Expand All @@ -63,20 +31,11 @@ public static Tx parse(final JsonIterator ji) {
builder.meta(TxMeta.parse(ji));
} else if (fieldEquals("transaction", buf, offset, len)) {
if (ji.whatIsNext() == ValueType.ARRAY) {
if (ji.readArray()) {
final var txData = ji.readString();
final var encoding = ji.continueArray().readString();
if ("base64".equals(encoding)) {
builder.data = Base64.getDecoder().decode(txData);
} else if ("base58".equals(encoding)) {
builder.data = Base58.decode(txData);
} else {
throw new JsonException("Failed to handle encoding " + encoding);
}
ji.skipRestOfArray();
}
ji.openArray();
builder.data = ji.decodeBase64String();
ji.skipRestOfArray();
} else {
ji.testObject(builder, TX_PARSER);
ji.skip();
}
} else {
ji.skip();
Expand Down

0 comments on commit bfbcf7c

Please sign in to comment.