Skip to content

Commit 6e3bade

Browse files
erenalpaslanmehmet6parmakappcent
authored andcommitted
#15 Adds pending transactions api (#50)
Co-authored-by: Eren <[email protected]>
1 parent 9cd5c3e commit 6e3bade

File tree

14 files changed

+256
-8
lines changed

14 files changed

+256
-8
lines changed

src/main/java/mobi/appcent/helium/Main.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,19 @@
11
package mobi.appcent.helium;
22

3-
import com.google.gson.Gson;
43
import mobi.appcent.helium.api.HeliumApi;
5-
import mobi.appcent.helium.model.*;
6-
import mobi.appcent.helium.model.account.Account;
7-
import mobi.appcent.helium.response.account.AccountsResponse;
8-
import mobi.appcent.helium.response.city.CitiesResponse;
4+
95

106
public class Main {
117

128
public static void main(String[] args) {
139
try {
1410
HeliumApi heliumApi = new HeliumApi();
15-
1611
System.out.println(
1712
heliumApi.assertLocations()
1813
.getListOfAssertLocations()
1914
.execute()
2015
.toString()
2116
);
22-
23-
2417
} catch (Exception e) {
2518
System.out.println(e.getMessage());
2619
}

src/main/java/mobi/appcent/helium/api/HeliumApi.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,13 @@ public class HeliumApi {
2020
private final ChallengesApi challengesApi = ChallengesApi.getInstance();
2121
private final DCBurnsApi dcBurnsApi = DCBurnsApi.getInstance();
2222
private final OraclePricesApi oraclePricesApi = OraclePricesApi.getInstance();
23+
private final PendingTransactionsApi pendingTransactionsApi = PendingTransactionsApi.getInstance();
2324
private final StateChannelsApi stateChannelsApi = StateChannelsApi.getInstance();
2425
private final LocationsApi locationsApi = LocationsApi.getInstance();
2526
private final AssertLocationsApi assertLocationsApi = AssertLocationsApi.getInstance();
2627
private final ElectionsApi electionsApi = ElectionsApi.getInstance();
2728
private final TransactionsApi transactionsApi = TransactionsApi.getInstance();
29+
2830
private static final HeliumSdkClient sdkClient = new HeliumSdkClient();
2931

3032
public HeliumApi() {
@@ -49,6 +51,7 @@ private void initOkHttpClients(OkHttpClient client) {
4951
challengesApi.setSdkClient(sdkClient);
5052
dcBurnsApi.setSdkClient(sdkClient);
5153
oraclePricesApi.setSdkClient(sdkClient);
54+
pendingTransactionsApi.setSdkClient(sdkClient);
5255
stateChannelsApi.setSdkClient(sdkClient);
5356
locationsApi.setSdkClient(sdkClient);
5457
assertLocationsApi.setSdkClient(sdkClient);
@@ -86,6 +89,8 @@ public CityApi cities() {
8689

8790
public OraclePricesApi oraclePrices() { return oraclePricesApi; }
8891

92+
public PendingTransactionsApi pendingTransactions() { return pendingTransactionsApi; }
93+
8994
public StateChannelsApi stateChannels() { return stateChannelsApi; }
9095

9196
public LocationsApi locations() { return locationsApi; }
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package mobi.appcent.helium.api;
2+
3+
import mobi.appcent.helium.request.pendingtransactions.PendingTransactionsStatusRequest;
4+
import mobi.appcent.helium.request.pendingtransactions.PostSubmitNewTransactionRequest;
5+
6+
/**
7+
* Created by erenalpaslan on 20.11.2022
8+
*/
9+
public interface IPendingTransactions {
10+
PendingTransactionsStatusRequest getPendingTransactionsStatus(String hash);
11+
PostSubmitNewTransactionRequest submitNewTransaction(String txn, String hash);
12+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package mobi.appcent.helium.api;
2+
3+
import mobi.appcent.helium.request.pendingtransactions.PendingTransactionsStatusRequest;
4+
import mobi.appcent.helium.request.pendingtransactions.PostSubmitNewTransactionRequest;
5+
6+
/**
7+
* Created by erenalpaslan on 20.11.2022
8+
*/
9+
public class PendingTransactionsApi extends BaseApi implements IPendingTransactions {
10+
@Override
11+
String path() {
12+
return BASE_URL + "/pending_transactions";
13+
}
14+
15+
public static PendingTransactionsApi getInstance() {
16+
return new PendingTransactionsApi();
17+
}
18+
19+
//region getPendingTransactionsStatus
20+
@Override
21+
public PendingTransactionsStatusRequest getPendingTransactionsStatus(String hash) {
22+
return new PendingTransactionsStatusRequest(sdkClient, hash);
23+
}
24+
//endregion
25+
26+
@Override
27+
public PostSubmitNewTransactionRequest submitNewTransaction(String txn, String hash) {
28+
return new PostSubmitNewTransactionRequest(sdkClient, txn, hash);
29+
}
30+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package mobi.appcent.helium.common;
2+
3+
/**
4+
* Created by erenalpaslan on 26.11.2022
5+
*/
6+
public class HeaderConstant {
7+
public static final String CONTENT_TYPE = "Content-Type";
8+
public static final String APPLICATION_JSON = "application/json";
9+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package mobi.appcent.helium.model.payment;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Data;
6+
7+
import java.math.BigInteger;
8+
9+
/**
10+
* Created by erenalpaslan on 20.11.2022
11+
*/
12+
@Data
13+
@AllArgsConstructor
14+
public class Payment {
15+
@SerializedName("token_type")
16+
private String tokenType;
17+
private String payee;
18+
private String memo;
19+
private Boolean max;
20+
private BigInteger amount;
21+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package mobi.appcent.helium.model.pendingtransaction;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Data;
6+
import mobi.appcent.helium.model.txn.Txn;
7+
8+
/**
9+
* Created by erenalpaslan on 20.11.2022
10+
*/
11+
@Data
12+
@AllArgsConstructor
13+
public class PendingTransactionStatus {
14+
@SerializedName("updated_at")
15+
private String updatedAt;
16+
private String type;
17+
private Txn txn;
18+
private String status;
19+
private String hash;
20+
@SerializedName("failed_reason")
21+
private String failedReason;
22+
@SerializedName("created_at")
23+
private String createdAt;
24+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package mobi.appcent.helium.model.pendingtransaction;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Data;
5+
6+
/**
7+
* Created by erenalpaslan on 20.11.2022
8+
*/
9+
@Data
10+
@AllArgsConstructor
11+
public class SubmitTransaction {
12+
private String hash;
13+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package mobi.appcent.helium.model.txn;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Data;
5+
import mobi.appcent.helium.model.payment.Payment;
6+
7+
import java.util.List;
8+
9+
/**
10+
* Created by erenalpaslan on 20.11.2022
11+
*/
12+
@Data
13+
@AllArgsConstructor
14+
public class Txn {
15+
private String type;
16+
private List<Payment> payments;
17+
private String payer;
18+
private Integer nonce;
19+
private String hash;
20+
private Integer fee;
21+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package mobi.appcent.helium.request.pendingtransactions;
2+
3+
import com.google.gson.reflect.TypeToken;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Data;
6+
import lombok.Getter;
7+
import lombok.Setter;
8+
import mobi.appcent.helium.HeliumSdkClient;
9+
import mobi.appcent.helium.api.PendingTransactionsApi;
10+
import mobi.appcent.helium.common.UrlConstant;
11+
import mobi.appcent.helium.httpClient.HttpMethod;
12+
import mobi.appcent.helium.request.BaseRequest;
13+
import mobi.appcent.helium.response.pendingTransaction.PendingTransactionsStatusResponse;
14+
import okhttp3.Call;
15+
16+
import java.io.IOException;
17+
import java.lang.reflect.Type;
18+
import java.util.Collections;
19+
20+
/**
21+
* Created by erenalpaslan on 26.11.2022
22+
*/
23+
@AllArgsConstructor
24+
@Getter
25+
@Setter
26+
public class PendingTransactionsStatusRequest extends BaseRequest {
27+
private final HeliumSdkClient client;
28+
private final String hash;
29+
30+
public PendingTransactionsStatusResponse execute() throws IOException {
31+
String path = UrlConstant.PENDING_TRANSACTION_PATH + "/" + hash;
32+
Call call = client.buildCall(path, HttpMethod.GET, Collections.emptyList(), null, null);
33+
Type type = TypeToken.get(PendingTransactionsStatusResponse.class).getType();
34+
return execute(call, type);
35+
}
36+
}

0 commit comments

Comments
 (0)