Javier Varona 2017-09-30 21:54:32 -04:00
commit a21b0a8752
5 changed files with 202 additions and 20 deletions

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2017 Agorise
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,33 @@
package cy.agorise.crystalwallet.apigenerator;
/**
* Created by henry on 27/9/2017.
*/
public class ApiRequest {
int id;
ApiRequestListener listener;
public ApiRequest(int id, ApiRequestListener listener) {
this.id = id;
this.listener = listener;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public ApiRequestListener getListener() {
return listener;
}
public void setListener(ApiRequestListener listener) {
this.listener = listener;
}
}

View File

@ -0,0 +1,12 @@
package cy.agorise.crystalwallet.apigenerator;
/**
* Created by henry on 27/9/2017.
*/
public interface ApiRequestListener {
public void success(Object answer, int idPetition);
public void fail(int idPetition);
}

View File

@ -1,9 +1,24 @@
package cy.agorise.crystalwallet.apigenerator;
import com.neovisionaries.ws.client.WebSocket;
import com.neovisionaries.ws.client.WebSocketException;
import com.neovisionaries.ws.client.WebSocketFactory;
import cy.agorise.graphenej.Address;
import cy.agorise.graphenej.UserAccount;
import cy.agorise.graphenej.api.GetAccounts;
import cy.agorise.graphenej.api.GetKeyReferences;
import cy.agorise.graphenej.api.GetRelativeAccountHistory;
import cy.agorise.graphenej.interfaces.WitnessResponseListener;
import cy.agorise.graphenej.models.AccountProperties;
import cy.agorise.graphenej.models.BaseResponse;
import cy.agorise.graphenej.models.HistoricalTransfer;
import cy.agorise.graphenej.models.WitnessResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import cy.agorise.crystalwallet.models.GrapheneAccount;
import cy.agorise.graphenej.models.HistoricalTransfer;
/**
* Created by henry on 26/9/2017.
@ -11,50 +26,151 @@ import cy.agorise.graphenej.models.HistoricalTransfer;
public class GrapheneApiGenerator {
//TODO network connections
private static int connectionTimeout = 5000;
private static String url = "http://128.0.69.157:8090"
/**
* Retrieves the data of an account searching by it's id
*
* @param accountId The accountId to retrieve
* @return The Account properties retrieved from the net, or null if fails
* @param request The Api request object, to answer this petition
*/
public GrapheneAccount getAccountById(String accountId){
//TODO implement
return null;
public static void getAccountById(String accountId, final ApiRequest request){
WebSocketFactory factory = new WebSocketFactory().setConnectionTimeout(connectionTimeout);
try {
final WebSocket webSocket = factory.createSocket(url);
webSocket.addListener(new GetAccounts(accountId, new WitnessResponseListener() {
@Override
public void onSuccess(WitnessResponse response) {
if (response.result.getClass() == ArrayList.class) {
List list = (List) response.result;
if (list.size() > 0) {
if (list.get(0).getClass() == AccountProperties.class) {
request.getListener().success(list.get(0),request.getId());
//TODO answer a crystal model
}
}
}
request.getListener().fail(request.getId());
}
@Override
public void onError(BaseResponse.Error error) {
request.getListener().fail(request.getId());
}
}));
Thread thread = new Thread(){
public void run(){
try {
webSocket.connect();
} catch (WebSocketException e) {
e.printStackTrace();
request.getListener().fail(request.getId());
}
}
};
thread.start();
} catch (IOException e) {
e.printStackTrace();
request.getListener().fail(request.getId());
}
}
/**
* Gets the account ID from an owner or active key
*
* @param address The address to retrieve
* @return The id of the account, of null
* @param request The Api request object, to answer this petition
*/
public String getAccountByOwnerOrActiveAddress(String address){
//TODO implement
return null;
public static void getAccountByOwnerOrActiveAddress(Address address, final ApiRequest request){
//TODO change address
WebSocketFactory factory = new WebSocketFactory().setConnectionTimeout(connectionTimeout);
try {
final WebSocket webSocket = factory.createSocket(url);
webSocket.addListener(new GetKeyReferences(address, true, new WitnessResponseListener() {
@Override
public void onSuccess(WitnessResponse response) {
final List<List<UserAccount>> resp = (List<List<UserAccount>>) response.result;
if(resp.size() > 0){
List<UserAccount> accounts = resp.get(0);
if(accounts.size() > 0){
for(UserAccount account : accounts) {
request.getListener().success(account,request.getId());}}}
request.getListener().fail(request.getId());
}
@Override
public void onError(BaseResponse.Error error) {
request.getListener().fail(request.getId());
}
}));
Thread thread = new Thread(){
public void run(){
try {
webSocket.connect();
} catch (WebSocketException e) {
e.printStackTrace();
request.getListener().fail(request.getId());
}
}
};
thread.start();
} catch (IOException e) {
e.printStackTrace();
request.getListener().fail(request.getId());
}
}
/**
* Return the Transaction for an Account
* Gets the Transaction for an Account
*
* @param accountId The account id to search
* @param start The start index of the transaction list
* @param stop The stop index of the transaction list
* @param limit the maximun transactions to retrieve
* @return The list of trnsaction of the account, or null if the call fail
* @param request The Api request object, to answer this petition
*/
public List<HistoricalTransfer> getAccountTransaction(String accountId, int start, int stop, int limit){
//TODO implement
return null;
public static void getAccountTransaction(String accountId, int start, int stop, int limit, final ApiRequest request){
WebSocketFactory factory = new WebSocketFactory().setConnectionTimeout(connectionTimeout);
try {
final WebSocket webSocket = factory.createSocket(url);
webSocket.addListener(new GetRelativeAccountHistory(new UserAccount(accountId), stop, limit, start, new WitnessResponseListener() {
@Override
public void onSuccess(WitnessResponse response) {
WitnessResponse<List<HistoricalTransfer>> resp = response;
request.getListener().success(resp,request.getId());
}
@Override
public void onError(BaseResponse.Error error) {
request.getListener().fail(request.getId());
}
}));
Thread thread = new Thread(){
public void run(){
try {
webSocket.connect();
} catch (WebSocketException e) {
e.printStackTrace();
request.getListener().fail(request.getId());
}
}
};
thread.start();
} catch (IOException e) {
e.printStackTrace();
request.getListener().fail(request.getId());
}
}
/**
* Returns if an Account Name is avaible to be used for a new account
* Gets if an Account Name is avaible to be used for a new account
*
* @param accountName The account Name to find
* @return If the account name isn't used in any bitshares account
* @param request The Api request object, to answer this petition
*/
public boolean isAccountNameAvaible(String accountName){
public static void isAccountNameAvaible(String accountName, ApiRequest request){
//TODO implement
return false;
}
}

View File

@ -12,7 +12,7 @@ public enum CryptoCoin implements Serializable {
LITECOIN(CryptoNet.LITECOIN,"LTC",8),
DASH(CryptoNet.DASH,"DASH",8),
DOGECOIN(CryptoNet.DOGECOIN,"DOGE",8),
BITSHARES(CryptoNet.BITSHARES,"BTS",8);
BITSHARES(CryptoNet.BITSHARES,"BTS",5);
protected CryptoNet cryptoNet;
protected String label;