Get Trade History

This commit is contained in:
Henry Varona 2016-12-18 20:42:43 -04:00
parent 6e2b886fd2
commit d9d01ddc37
10 changed files with 192 additions and 32 deletions

2
.gitignore vendored
View file

@ -77,3 +77,5 @@ atlassian-ide-plugin.xml
/*.log
src/main/java/com/luminiasoft/bitshares/mycelium/*
bts_bilthon_20161218.bin

View file

@ -61,7 +61,7 @@ public class Authority implements GrapheneSerializable {
this.account_auths = accountAuthorities;
}
public List<PublicKey> getKeyAuths(){
public List<PublicKey> getKeyAuthList(){
ArrayList<PublicKey> keys = new ArrayList<>();
for(PublicKey pk : key_auths.keySet()){
keys.add(pk);
@ -69,6 +69,14 @@ public class Authority implements GrapheneSerializable {
return keys;
}
public HashMap<PublicKey, Integer> getKeyAuths(){
return this.key_auths;
}
public HashMap<UserAccount, Integer> getAccountAuths(){
return this.account_auths;
}
@Override
public String toJsonString() {
return null;
@ -138,6 +146,19 @@ public class Authority implements GrapheneSerializable {
return Bytes.toArray(byteArray);
}
@Override
public boolean equals(Object obj) {
Authority authority = (Authority) obj;
HashMap<PublicKey, Integer> keyAuths = authority.getKeyAuths();
HashMap<UserAccount, Integer> accountAuths = authority.getAccountAuths();
System.out.println("key auths match: "+this.key_auths.equals(keyAuths));
System.out.println("account auths match: "+this.account_auths.equals(accountAuths));
System.out.println("weight threshold matches: "+(this.weight_threshold == authority.weight_threshold));
return this.key_auths.equals(keyAuths) &&
this.account_auths.equals(accountAuths) &&
this.weight_threshold == authority.weight_threshold;
}
/**
* Custom deserializer used while parsing the 'get_account_by_name' API call response.
*

View file

@ -20,11 +20,18 @@ public class BrainKey {
// The size of the word dictionary
public static final int DICT_WORD_COUNT = 49744;
// The required number of words
/* The required number of words */
public static final int BRAINKEY_WORD_COUNT = 12;
/* The corresponding private key derivated from the brain key */
private ECKey mPrivateKey;
/* The actual words from this brain key + the sequence number */
private String mBrainKey;
/* The sequence number */
private int sequenceNumber;
/**
* Method that will generate a random brain key
*
@ -49,7 +56,6 @@ public class BrainKey {
stringBuilder.append(word);
stringBuilder.append(" ");
}
System.out.println("Suggestion: '"+stringBuilder.toString().trim()+"'");
return stringBuilder.toString().trim();
}
/**
@ -60,6 +66,8 @@ public class BrainKey {
* @param sequence Sequence number
*/
public BrainKey(String words, int sequence) {
this.mBrainKey = words;
this.sequenceNumber = sequence;
String encoded = String.format("%s %d", words, sequence);
try {
MessageDigest md = MessageDigest.getInstance("SHA-512");
@ -100,4 +108,12 @@ public class BrainKey {
DumpedPrivateKey wif = this.mPrivateKey.decompress().getPrivateKeyEncoded(NetworkParameters.fromID(NetworkParameters.ID_MAINNET));
return wif.toString();
}
public String getBrainKey(){
return mBrainKey;
}
public int getSequenceNumber(){
return sequenceNumber;
}
}

View file

@ -39,4 +39,15 @@ public class PublicKey implements ByteSerializable {
}
return new Address(pk).toString();
}
@Override
public int hashCode() {
return publicKey.hashCode();
}
@Override
public boolean equals(Object obj) {
PublicKey other = (PublicKey) obj;
return this.publicKey.equals(other.getKey());
}
}

View file

@ -10,10 +10,10 @@ public class RPC {
public static final String CALL_HISTORY = "history";
public static final String CALL_DATABASE = "database";
public static final String CALL_GET_ACCOUNT_BY_NAME = "get_account_by_name";
public static final String CALL_GET_ACCOUNTS = "get_accounts";
public static final String CALL_GET_DYNAMIC_GLOBAL_PROPERTIES = "get_dynamic_global_properties";
public static final String CALL_BROADCAST_TRANSACTION = "broadcast_transaction";
public static final String CALL_GET_REQUIRED_FEES = "get_required_fees";
public static final String CALL_GET_ACCOUNTS = "get_accounts";
public static final String CALL_GET_KEY_REFERENCES = "get_key_references";
public static final String CALL_GET_RELATIVE_ACCOUNT_HISTORY = "get_relative_account_history";
public static final String CALL_LOOKUP_ACCOUNTS = "lookup_accounts";

File diff suppressed because one or more lines are too long

View file

@ -39,12 +39,14 @@ public class GetAccountByName extends WebSocketAdapter {
public void onConnected(WebSocket websocket, Map<String, List<String>> headers) throws Exception {
ArrayList<Serializable> accountParams = new ArrayList<>();
accountParams.add(this.accountName);
ApiCall getAccountByName = new ApiCall(0, RPC.CALL_GET_ACCOUNT_BY_NAME, accountParams, "2.0", 1);
ApiCall getAccountByName = new ApiCall(0, RPC.CALL_GET_ACCOUNT_BY_NAME, accountParams, RPC.VERSION, 1);
websocket.sendText(getAccountByName.toJsonString());
}
@Override
public void onTextFrame(WebSocket websocket, WebSocketFrame frame) throws Exception {
if(frame.isTextFrame())
System.out.println("<<< "+frame.getPayloadText());
String response = frame.getPayloadText();
GsonBuilder builder = new GsonBuilder();
@ -62,6 +64,14 @@ public class GetAccountByName extends WebSocketAdapter {
websocket.disconnect();
}
@Override
public void onFrameSent(WebSocket websocket, WebSocketFrame frame) throws Exception {
if(frame.isTextFrame()){
System.out.println(">>> "+frame.getPayloadText());
}
}
@Override
public void onError(WebSocket websocket, WebSocketException cause) throws Exception {
mListener.onError(new BaseResponse.Error(cause.getMessage()));

View file

@ -29,35 +29,35 @@ import java.util.Map;
*
* @author henry
*/
public class GetAccountNameById extends WebSocketAdapter {
public class GetAccounts extends WebSocketAdapter {
private String accountId;
private List<UserAccount> userAccounts;
private WitnessResponseListener mListener;
public GetAccountNameById(String accountId, WitnessResponseListener listener){
public GetAccounts(String accountId, WitnessResponseListener listener){
this.accountId = accountId;
this.mListener = listener;
}
public GetAccountNameById(List<UserAccount> accounts, WitnessResponseListener listener){
public GetAccounts(List<UserAccount> accounts, WitnessResponseListener listener){
this.userAccounts = accounts;
this.mListener = listener;
}
@Override
public void onConnected(WebSocket websocket, Map<String, List<String>> headers) throws Exception {
ArrayList<Serializable> accountParams = new ArrayList();
ArrayList<Serializable> paramAddress = new ArrayList();
ArrayList<Serializable> params = new ArrayList();
ArrayList<Serializable> accountIds = new ArrayList();
if(accountId == null){
for(UserAccount account : userAccounts) {
paramAddress.add(account.getObjectId());
accountIds.add(account.getObjectId());
}
}else{
paramAddress.add(accountId);
accountIds.add(accountId);
}
accountParams.add(paramAddress);
ApiCall getAccountByAddress = new ApiCall(0, RPC.CALL_GET_ACCOUNTS, accountParams, RPC.VERSION, 1);
params.add(accountIds);
ApiCall getAccountByAddress = new ApiCall(0, RPC.CALL_GET_ACCOUNTS, params, RPC.VERSION, 1);
websocket.sendText(getAccountByAddress.toJsonString());
}

View file

@ -0,0 +1,61 @@
package de.bitsharesmunich.graphenej;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.HashMap;
import java.util.InputMismatchException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
/**
* Created by nelson on 12/16/16.
*/
public class AuthorityTest {
private Authority authority;
private Authority sameAuthority;
private Authority differentAuthority;
private Authority keyAuthority1;
private Authority keyAuthority2;
@Before
public void setUp() throws Exception {
authority = new Authority();
sameAuthority = new Authority();
HashMap<UserAccount, Integer> accountAuthorityMap = new HashMap<>();
UserAccount userAccount = new UserAccount("1.2.20000");
accountAuthorityMap.put(userAccount, 1);
differentAuthority = new Authority(1, null, accountAuthorityMap);
Address address1 = new Address("BTS8RiFgs8HkcVPVobHLKEv6yL3iXcC9SWjbPVS15dDAXLG9GYhnY");
Address address2 = new Address("BTS8RiFgs8HkcVPVobHLKEv6yL3iXcC9SWjbPVS15dDAXLG9GYhnY");
PublicKey publicKey = address1.getPublicKey();
PublicKey samePublicKey = address2.getPublicKey();
HashMap<PublicKey, Integer> keyMap1 = new HashMap<>();
HashMap<PublicKey, Integer> keyMap2 = new HashMap<>();
keyMap1.put(publicKey, 1);
keyMap2.put(samePublicKey, 1);
keyAuthority1 = new Authority(1, keyMap1, null);
keyAuthority2 = new Authority(1, keyMap2, null);
}
@org.junit.Test
public void toBytes() throws Exception {
}
@Test
public void equals() throws Exception {
assertEquals("Equal authorities", authority, sameAuthority);
assertEquals("Different authorities ", authority, differentAuthority);
assertEquals("Two public keys with the same public key should be equal", keyAuthority1, keyAuthority2);
}
@After
public void tearDown(){
}
}

View file

@ -0,0 +1,33 @@
package de.bitsharesmunich.graphenej;
import org.bitcoinj.core.*;
import org.junit.*;
import static org.junit.Assert.*;
/**
* Created by nelson on 12/16/16.
*/
public class PublicKeyTest {
@Before
public void setUp() throws Exception {
}
@org.junit.Test
public void equals() throws Exception {
Address address1 = new Address("BTS8RiFgs8HkcVPVobHLKEv6yL3iXcC9SWjbPVS15dDAXLG9GYhnY");
Address address2 = new Address("BTS8RiFgs8HkcVPVobHLKEv6yL3iXcC9SWjbPVS15dDAXLG9GYhnY");
Address address3 = new Address("BTS8RiFgs8HkcVPVobHLKEv6yL3iXcC9SWjbPVS15dDAXLG9GYp00");
PublicKey pk1 = address1.getPublicKey();
PublicKey pk2 = address2.getPublicKey();
PublicKey pk3 = address3.getPublicKey();
assertEquals("Public keys must be equal", pk1, pk2);
assertNotEquals("Public keys must not be equal", pk1, pk3);
}
@After
public void tearDown() throws Exception {
}
}