Skip to content

Commit

Permalink
fix extensions make it as array
Browse files Browse the repository at this point in the history
  • Loading branch information
bitwheeze committed Apr 20, 2024
1 parent b92cf94 commit 8f730a2
Show file tree
Hide file tree
Showing 17 changed files with 87 additions and 13 deletions.
4 changes: 2 additions & 2 deletions src/main/java/bitwheeze/golos/goloslib/model/Block.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ public class Block {
private LocalDateTime timestamp;
private String witness;
private String transactionMerkleRoot;
@JsonDeserialize(using = ToStringDeserializer.class)
private String extensions; //TODO:
@JsonDeserialize(using = ToStringArrayDeserializer.class)
private String[] extensions; //TODO:
private String witnessSignature;
private Transaction[] transactions;
private long timestampMsec;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package bitwheeze.golos.goloslib.model;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;
import java.util.List;

@Slf4j
public class ToStringArrayDeserializer extends StdDeserializer<String[]> {

public ToStringArrayDeserializer() {
this(null);
}

public ToStringArrayDeserializer(Class<WorkerRequest> t) {
super(t);
}

@Override
public String[] deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
final var tree = p.readValueAsTree();
if(tree.isArray()) {
final var elCount = tree.size();
final var returnArray = new String[elCount];
for(int i = 0; i < elCount; i++) {
final var el = tree.get(i);
returnArray[i] = el.toString();
}

return returnArray;
}
log.warn("Expected array, got: {}", tree.toString());
return new String[0];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ public class NodeError {
long code;
String message;
@JsonDeserialize(using = ToStringDeserializer.class)
String data;
String[] data;
}
2 changes: 2 additions & 0 deletions src/main/java/bitwheeze/golos/goloslib/model/op/Claim.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package bitwheeze.golos.goloslib.model.op;

import bitwheeze.golos.goloslib.model.Asset;
import bitwheeze.golos.goloslib.model.ToStringArrayDeserializer;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import lombok.Data;
Expand All @@ -15,5 +16,6 @@ public class Claim extends Operation {
String to;
Asset amount;
boolean to_vesting;
@JsonDeserialize(using = ToStringArrayDeserializer.class)
String[] extensions;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package bitwheeze.golos.goloslib.model.op;

import bitwheeze.golos.goloslib.model.ToStringArrayDeserializer;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;

Expand All @@ -19,5 +20,6 @@ public class CommentOptions extends Operation {
private short percentSteemDollars;
private boolean allowVotes;
private boolean allowCurationRewards;
@JsonDeserialize(using = ToStringArrayDeserializer.class)
private String[] extensions;
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package bitwheeze.golos.goloslib.model.op;

import bitwheeze.golos.goloslib.model.Asset;
import bitwheeze.golos.goloslib.model.ToStringDeserializer;
import bitwheeze.golos.goloslib.model.ToStringArrayDeserializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import lombok.AllArgsConstructor;
import lombok.Data;
Expand All @@ -18,5 +18,6 @@ public class DelegateVestingSharesWithInterest extends Operation {
String delegatee;
Asset vestingShares;
int interestRate;
@JsonDeserialize(using = ToStringArrayDeserializer.class)
private String[] extensions;
}
2 changes: 2 additions & 0 deletions src/main/java/bitwheeze/golos/goloslib/model/op/Donate.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package bitwheeze.golos.goloslib.model.op;

import bitwheeze.golos.goloslib.model.Asset;
import bitwheeze.golos.goloslib.model.ToStringArrayDeserializer;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import lombok.AllArgsConstructor;
Expand All @@ -19,5 +20,6 @@ public class Donate extends Operation {
private String to;
private Asset amount;
private DonateMemo memo;
@JsonDeserialize(using = ToStringArrayDeserializer.class)
private String[] extensions;
}
3 changes: 2 additions & 1 deletion src/main/java/bitwheeze/golos/goloslib/model/op/Invite.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package bitwheeze.golos.goloslib.model.op;

import bitwheeze.golos.goloslib.model.Asset;
import bitwheeze.golos.goloslib.model.ToStringDeserializer;
import bitwheeze.golos.goloslib.model.ToStringArrayDeserializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import lombok.AllArgsConstructor;
import lombok.Data;
Expand All @@ -17,5 +17,6 @@ public class Invite extends Operation {
String creator;
Asset balance;
String inviteKey;
@JsonDeserialize(using = ToStringArrayDeserializer.class)
private String[] extensions;
}
2 changes: 2 additions & 0 deletions src/main/java/bitwheeze/golos/goloslib/model/op/NftBuy.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package bitwheeze.golos.goloslib.model.op;

import bitwheeze.golos.goloslib.model.Asset;
import bitwheeze.golos.goloslib.model.ToStringArrayDeserializer;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import lombok.AllArgsConstructor;
Expand All @@ -18,5 +19,6 @@ public class NftBuy extends Operation {
private int tokenId;
private int orderId;
private Asset price;
@JsonDeserialize(using = ToStringArrayDeserializer.class)
private String[] extensions;
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package bitwheeze.golos.goloslib.model.op;

import bitwheeze.golos.goloslib.model.Asset;
import bitwheeze.golos.goloslib.model.ToStringArrayDeserializer;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import lombok.AllArgsConstructor;
Expand All @@ -15,5 +16,6 @@
public class NftCancelOrder extends Operation {
private String owner;
private int orderId;
@JsonDeserialize(using = ToStringArrayDeserializer.class)
private String[] extensions;
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package bitwheeze.golos.goloslib.model.op;

import bitwheeze.golos.goloslib.model.Asset;
import bitwheeze.golos.goloslib.model.ToStringArrayDeserializer;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import lombok.AllArgsConstructor;
Expand All @@ -17,5 +18,6 @@ public class NftCollection extends Operation {
private String name;
private String jsonMetadata;
private int maxTokenCount;
@JsonDeserialize(using = ToStringArrayDeserializer.class)
private String[] extensions;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package bitwheeze.golos.goloslib.model.op;

import bitwheeze.golos.goloslib.model.ToStringArrayDeserializer;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import lombok.AllArgsConstructor;
Expand All @@ -14,5 +15,6 @@
public class NftCollectionDelete extends Operation {
private String creator;
private String name;
@JsonDeserialize(using = ToStringArrayDeserializer.class)
private String[] extensions;
}
2 changes: 2 additions & 0 deletions src/main/java/bitwheeze/golos/goloslib/model/op/NftIssue.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package bitwheeze.golos.goloslib.model.op;

import bitwheeze.golos.goloslib.model.ToStringArrayDeserializer;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import lombok.AllArgsConstructor;
Expand All @@ -16,5 +17,6 @@ public class NftIssue extends Operation {
private String name;
private String to;
private String jsonMetadata;
@JsonDeserialize(using = ToStringArrayDeserializer.class)
private String[] extensions;
}
2 changes: 2 additions & 0 deletions src/main/java/bitwheeze/golos/goloslib/model/op/NftSell.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package bitwheeze.golos.goloslib.model.op;

import bitwheeze.golos.goloslib.model.Asset;
import bitwheeze.golos.goloslib.model.ToStringArrayDeserializer;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import lombok.AllArgsConstructor;
Expand All @@ -18,5 +19,6 @@ public class NftSell extends Operation {
private String buyer;
private int orderId;
private Asset price;
@JsonDeserialize(using = ToStringArrayDeserializer.class)
private String[] extensions;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package bitwheeze.golos.goloslib.model.op;

import bitwheeze.golos.goloslib.model.ToStringArrayDeserializer;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import lombok.AllArgsConstructor;
Expand All @@ -16,5 +17,6 @@ public class NftTransfer extends Operation {
private String from;
private String to;
private String memo;
@JsonDeserialize(using = ToStringArrayDeserializer.class)
private String[] extensions;
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
package bitwheeze.golos.goloslib.model.op;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;

import bitwheeze.golos.goloslib.model.Asset;
import bitwheeze.golos.goloslib.model.ToStringDeserializer;
import bitwheeze.golos.goloslib.model.ToStringArrayDeserializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
Expand All @@ -19,5 +18,6 @@ public class TransferFromTip extends Operation {
private String to;
private Asset amount;
private String memo;
@JsonDeserialize(using = ToStringArrayDeserializer.class)
private String[] extensions;
}
23 changes: 18 additions & 5 deletions src/test/java/bitwheeze/golos/goloslib/GolosApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import lombok.Builder;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
Expand Down Expand Up @@ -55,12 +56,24 @@ void getDynamicGlobalProperties() {

@Test
void getBlock() {
final long TEST_BLOCK_NUM = 52518042;
final String TEST_PREV = "03215c996c7c4ad648b94169aeb639e28db1b4bb";
var block = api.getBlock(TEST_BLOCK_NUM).block();
final long TEST_BLOCK_NUM = 78682176;
final String TEST_PREV = "04b0983fa9fe9f7c9b8590daaa466ca2bca58238";
var block = api.getBlock(TEST_BLOCK_NUM).block().orElseThrow();
log.info("got response {}", block);
assertEquals(TEST_BLOCK_NUM+"", block.getId());
assertEquals(TEST_PREV, block.orElseThrow().getPrevious());
log.info("comment_options {}", block.getTransactions()[0].getOperations()[1]);
assertEquals(TEST_PREV, block.getPrevious());
}

@Test
@SneakyThrows
void getBlockRange() {
long startBlock = 78682176;
for(int i = 0; i < 50000; i++) {
final var blockNo = startBlock + i;
var block = api.getBlock(blockNo).block().orElseThrow();
log.info("block {}: {}", blockNo, block.getTransactions());
Thread.sleep(500);
}
}

@Test
Expand Down

0 comments on commit 8f730a2

Please sign in to comment.