diff --git a/graphenej/src/main/java/cy/agorise/graphenej/api/android/DeserializationMap.java b/graphenej/src/main/java/cy/agorise/graphenej/api/android/DeserializationMap.java index 449bf22..cefdb56 100644 --- a/graphenej/src/main/java/cy/agorise/graphenej/api/android/DeserializationMap.java +++ b/graphenej/src/main/java/cy/agorise/graphenej/api/android/DeserializationMap.java @@ -16,6 +16,7 @@ import cy.agorise.graphenej.Authority; import cy.agorise.graphenej.BaseOperation; import cy.agorise.graphenej.Extensions; import cy.agorise.graphenej.LimitOrder; +import cy.agorise.graphenej.Memo; import cy.agorise.graphenej.Transaction; import cy.agorise.graphenej.UserAccount; import cy.agorise.graphenej.api.calls.GetAccountByName; @@ -23,6 +24,7 @@ import cy.agorise.graphenej.api.calls.GetAccountHistoryByOperations; import cy.agorise.graphenej.api.calls.GetAccounts; import cy.agorise.graphenej.api.calls.GetBlock; import cy.agorise.graphenej.api.calls.GetBlockHeader; +import cy.agorise.graphenej.api.calls.GetDynamicGlobalProperties; import cy.agorise.graphenej.api.calls.GetFullAccounts; import cy.agorise.graphenej.api.calls.GetLimitOrders; import cy.agorise.graphenej.api.calls.GetMarketHistory; @@ -35,10 +37,10 @@ import cy.agorise.graphenej.models.AccountProperties; import cy.agorise.graphenej.models.Block; import cy.agorise.graphenej.models.BlockHeader; import cy.agorise.graphenej.models.BucketObject; +import cy.agorise.graphenej.models.DynamicGlobalProperties; import cy.agorise.graphenej.models.FullAccountDetails; import cy.agorise.graphenej.models.HistoryOperationDetail; import cy.agorise.graphenej.models.OperationHistory; -import cy.agorise.graphenej.Memo; import cy.agorise.graphenej.operations.CustomOperation; import cy.agorise.graphenej.operations.LimitOrderCreateOperation; import cy.agorise.graphenej.operations.TransferOperation; @@ -56,7 +58,7 @@ public class DeserializationMap { private HashMap mGsonMap = new HashMap<>(); - public DeserializationMap(){ + DeserializationMap(){ Gson genericGson = new Gson(); // GetBlock @@ -169,6 +171,13 @@ public class DeserializationMap { .registerTypeAdapter(AccountOptions.class, new AccountOptions.AccountOptionsDeserializer()) .create(); mGsonMap.put(GetFullAccounts.class, getFullAccountsGson); + + // GetDynamicGlobalProperties + mClassMap.put(GetDynamicGlobalProperties.class, DynamicGlobalProperties.class); + Gson getDynamicGlobalPropertiesGson = new GsonBuilder() + .registerTypeAdapter(DynamicGlobalProperties.class, new DynamicGlobalProperties.DynamicGlobalPropertiesDeserializer()) + .create(); + mGsonMap.put(GetDynamicGlobalProperties.class, getDynamicGlobalPropertiesGson); } public Class getReceivedClass(Class _class){ diff --git a/graphenej/src/main/java/cy/agorise/graphenej/api/android/NetworkService.java b/graphenej/src/main/java/cy/agorise/graphenej/api/android/NetworkService.java index 7a1ba3a..dd16696 100644 --- a/graphenej/src/main/java/cy/agorise/graphenej/api/android/NetworkService.java +++ b/graphenej/src/main/java/cy/agorise/graphenej/api/android/NetworkService.java @@ -458,6 +458,9 @@ public class NetworkService extends Service { } else if(responsePayloadClass == HistoryOperationDetail.class){ Type GetAccountHistoryByOperationsResponse = new TypeToken>(){}.getType(); parsedResponse = gson.fromJson(text, GetAccountHistoryByOperationsResponse); + }else if(responsePayloadClass == DynamicGlobalProperties.class){ + Type GetDynamicGlobalPropertiesResponse = new TypeToken>(){}.getType(); + parsedResponse = gson.fromJson(text, GetDynamicGlobalPropertiesResponse); }else if(responsePayloadClass == List.class){ // If the response payload is a List, further inquiry is required in order to // determine a list of what is expected here diff --git a/graphenej/src/main/java/cy/agorise/graphenej/api/calls/GetDynamicGlobalProperties.java b/graphenej/src/main/java/cy/agorise/graphenej/api/calls/GetDynamicGlobalProperties.java new file mode 100644 index 0000000..eacedac --- /dev/null +++ b/graphenej/src/main/java/cy/agorise/graphenej/api/calls/GetDynamicGlobalProperties.java @@ -0,0 +1,18 @@ +package cy.agorise.graphenej.api.calls; + +import java.io.Serializable; +import java.util.ArrayList; + +import cy.agorise.graphenej.RPC; +import cy.agorise.graphenej.api.ApiAccess; +import cy.agorise.graphenej.models.ApiCall; + +public class GetDynamicGlobalProperties implements ApiCallable { + public static final int REQUIRED_API = ApiAccess.API_NONE; + + @Override + public ApiCall toApiCall(int apiId, long sequenceId) { + ArrayList params = new ArrayList<>(); + return new ApiCall(apiId, RPC.CALL_GET_DYNAMIC_GLOBAL_PROPERTIES, params, RPC.VERSION, sequenceId); + } +} diff --git a/sample/src/main/java/cy/agorise/labs/sample/CallsActivity.java b/sample/src/main/java/cy/agorise/labs/sample/CallsActivity.java index 7e72152..a103e43 100644 --- a/sample/src/main/java/cy/agorise/labs/sample/CallsActivity.java +++ b/sample/src/main/java/cy/agorise/labs/sample/CallsActivity.java @@ -47,7 +47,8 @@ public class CallsActivity extends AppCompatActivity { RPC.CALL_GET_LIMIT_ORDERS, RPC.CALL_GET_ACCOUNT_HISTORY_BY_OPERATIONS, RPC.CALL_GET_FULL_ACCOUNTS, - RPC.CALL_SET_SUBSCRIBE_CALLBACK + RPC.CALL_SET_SUBSCRIBE_CALLBACK, + RPC.CALL_GET_DYNAMIC_GLOBAL_PROPERTIES }; @NonNull diff --git a/sample/src/main/java/cy/agorise/labs/sample/PerformCallActivity.java b/sample/src/main/java/cy/agorise/labs/sample/PerformCallActivity.java index 08254ef..9a4146c 100644 --- a/sample/src/main/java/cy/agorise/labs/sample/PerformCallActivity.java +++ b/sample/src/main/java/cy/agorise/labs/sample/PerformCallActivity.java @@ -33,6 +33,7 @@ import cy.agorise.graphenej.api.calls.GetAccountByName; import cy.agorise.graphenej.api.calls.GetAccountHistoryByOperations; import cy.agorise.graphenej.api.calls.GetAccounts; import cy.agorise.graphenej.api.calls.GetBlock; +import cy.agorise.graphenej.api.calls.GetDynamicGlobalProperties; import cy.agorise.graphenej.api.calls.GetFullAccounts; import cy.agorise.graphenej.api.calls.GetLimitOrders; import cy.agorise.graphenej.api.calls.GetObjects; @@ -135,6 +136,8 @@ public class PerformCallActivity extends ConnectedActivity { case RPC.CALL_GET_FULL_ACCOUNTS: setupGetFullAccounts(); break; + case RPC.CALL_GET_DYNAMIC_GLOBAL_PROPERTIES: + setupGetDynamicGlobalProperties(); default: Log.d(TAG,"Default called"); } @@ -250,8 +253,17 @@ public class PerformCallActivity extends ConnectedActivity { param1.setInputType(InputType.TYPE_CLASS_TEXT); } + private void setupGetDynamicGlobalProperties(){ + requiredInput(0); + } + private void requiredInput(int inputCount){ - if(inputCount == 1){ + if(inputCount == 0){ + mParam1View.setVisibility(View.GONE); + mParam2View.setVisibility(View.GONE); + mParam3View.setVisibility(View.GONE); + mParam4View.setVisibility(View.GONE); + }else if(inputCount == 1){ mParam1View.setVisibility(View.VISIBLE); mParam2View.setVisibility(View.GONE); mParam3View.setVisibility(View.GONE); @@ -309,6 +321,9 @@ public class PerformCallActivity extends ConnectedActivity { break; case RPC.CALL_GET_FULL_ACCOUNTS: getFullAccounts(); + break; + case RPC.CALL_GET_DYNAMIC_GLOBAL_PROPERTIES: + getDynamicGlobalProperties(); default: Log.d(TAG,"Default called"); } @@ -391,6 +406,11 @@ public class PerformCallActivity extends ConnectedActivity { responseMap.put(id, mRPC); } + private void getDynamicGlobalProperties(){ + long id = mNetworkService.sendMessage(new GetDynamicGlobalProperties(), GetDynamicGlobalProperties.REQUIRED_API); + responseMap.put(id, mRPC); + } + /** * Internal method that will decide what to do with each JSON-RPC response * @@ -414,6 +434,7 @@ public class PerformCallActivity extends ConnectedActivity { case RPC.CALL_GET_LIMIT_ORDERS: case RPC.CALL_GET_ACCOUNT_HISTORY_BY_OPERATIONS: case RPC.CALL_GET_FULL_ACCOUNTS: + case RPC.CALL_GET_DYNAMIC_GLOBAL_PROPERTIES: mResponseView.setText(mResponseView.getText() + gson.toJson(response, JsonRpcResponse.class) + "\n"); break; default: