Skip to content

Commit 9cd5c3e

Browse files
erenalpaslanmehmet6parmakappcent
authored andcommitted
#23 Adds state channels api (#49)
Co-authored-by: Eren <[email protected]>
1 parent f07c297 commit 9cd5c3e

File tree

9 files changed

+185
-0
lines changed

9 files changed

+185
-0
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ 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 StateChannelsApi stateChannelsApi = StateChannelsApi.getInstance();
2324
private final LocationsApi locationsApi = LocationsApi.getInstance();
2425
private final AssertLocationsApi assertLocationsApi = AssertLocationsApi.getInstance();
2526
private final ElectionsApi electionsApi = ElectionsApi.getInstance();
@@ -48,6 +49,7 @@ private void initOkHttpClients(OkHttpClient client) {
4849
challengesApi.setSdkClient(sdkClient);
4950
dcBurnsApi.setSdkClient(sdkClient);
5051
oraclePricesApi.setSdkClient(sdkClient);
52+
stateChannelsApi.setSdkClient(sdkClient);
5153
locationsApi.setSdkClient(sdkClient);
5254
assertLocationsApi.setSdkClient(sdkClient);
5355
electionsApi.setSdkClient(sdkClient);
@@ -84,6 +86,8 @@ public CityApi cities() {
8486

8587
public OraclePricesApi oraclePrices() { return oraclePricesApi; }
8688

89+
public StateChannelsApi stateChannels() { return stateChannelsApi; }
90+
8791
public LocationsApi locations() { return locationsApi; }
8892

8993
public AssertLocationsApi assertLocations() { return assertLocationsApi; }
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package mobi.appcent.helium.api;
2+
3+
import mobi.appcent.helium.request.statechannel.StateChannelClosesRequest;
4+
5+
/**
6+
* Created by erenalpaslan on 3.12.2022
7+
*/
8+
public interface IStateChannelsApi {
9+
StateChannelClosesRequest getStateChannelCloses();
10+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package mobi.appcent.helium.api;
2+
3+
import mobi.appcent.helium.request.statechannel.StateChannelClosesRequest;
4+
5+
/**
6+
* Created by erenalpaslan on 3.12.2022
7+
*/
8+
public class StateChannelsApi extends BaseApi implements IStateChannelsApi{
9+
@Override
10+
String path() {
11+
return null;
12+
}
13+
14+
public static StateChannelsApi getInstance() {
15+
return new StateChannelsApi();
16+
}
17+
18+
@Override
19+
public StateChannelClosesRequest getStateChannelCloses() {
20+
return new StateChannelClosesRequest(sdkClient);
21+
}
22+
}

src/main/java/mobi/appcent/helium/common/UrlConstant.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public class UrlConstant {
1414
public static final String VALIDATORS_PATH = BASE_PATH + "/validators";
1515
public static final String CHALLENGES_PATH = BASE_PATH + "/challenges";
1616
public static final String DC_BURNS_PATH = BASE_PATH + "/dc_burns";
17+
public static final String STATE_CHANNELS_PATH = BASE_PATH + "/state_channels";
1718
public static final String LOCATIONS_PATH = BASE_PATH + "/locations";
1819
public static final String ASSERT_LOCATIONS_PATH = BASE_PATH + "/assert_locations";
1920
public static final String ELECTIONS_PATH = BASE_PATH + "/elections";
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package mobi.appcent.helium.model.statechannel;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Data;
6+
7+
import java.math.BigInteger;
8+
import java.util.List;
9+
10+
/**
11+
* Created by erenalpaslan on 3.12.2022
12+
*/
13+
@Data
14+
@AllArgsConstructor
15+
public class StateChannel {
16+
private List<Summary> summaries;
17+
private String state;
18+
@SerializedName("root_hash")
19+
private String rootHash;
20+
private String owner;
21+
private Integer nonce;
22+
private String id;
23+
@SerializedName("expire_at_block")
24+
private BigInteger expireAtBlock;
25+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package mobi.appcent.helium.model.statechannel;
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 3.12.2022
11+
*/
12+
@Data
13+
@AllArgsConstructor
14+
public class StateChannelCloseTransaction {
15+
private String type;
16+
private Long time;
17+
@SerializedName("state_channel")
18+
private StateChannel stateChannel;
19+
private BigInteger height;
20+
private String hash;
21+
@SerializedName("conflicts_with")
22+
private String conflictsWith;
23+
private String closer;
24+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package mobi.appcent.helium.model.statechannel;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Data;
6+
7+
/**
8+
* Created by erenalpaslan on 3.12.2022
9+
*/
10+
@Data
11+
@AllArgsConstructor
12+
public class Summary {
13+
private String owner;
14+
@SerializedName("num_packets")
15+
private Integer numPackets;
16+
@SerializedName("num_dcs")
17+
private Integer numDcs;
18+
private String location;
19+
private String client;
20+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package mobi.appcent.helium.request.statechannel;
2+
3+
import com.google.gson.reflect.TypeToken;
4+
import mobi.appcent.helium.HeliumSdkClient;
5+
import mobi.appcent.helium.common.FieldConstant;
6+
import mobi.appcent.helium.common.UrlConstant;
7+
import mobi.appcent.helium.httpClient.HttpMethod;
8+
import mobi.appcent.helium.model.Pair;
9+
import mobi.appcent.helium.request.BaseRequest;
10+
import mobi.appcent.helium.response.account.AccountsResponse;
11+
import mobi.appcent.helium.response.statechannel.StateChannelClosesResponse;
12+
import okhttp3.Call;
13+
14+
import java.io.IOException;
15+
import java.lang.reflect.Type;
16+
import java.util.ArrayList;
17+
18+
/**
19+
* Created by erenalpaslan on 3.12.2022
20+
*/
21+
public class StateChannelClosesRequest extends BaseRequest {
22+
private final HeliumSdkClient client;
23+
private String cursor;
24+
private String minTime;
25+
private String maxTime;
26+
private Integer limit;
27+
28+
public StateChannelClosesRequest(HeliumSdkClient client) {
29+
this.client = client;
30+
}
31+
32+
public StateChannelClosesRequest cursor(String cursor) {
33+
this.cursor = cursor;
34+
return this;
35+
}
36+
37+
public StateChannelClosesRequest minTime(String minTime) {
38+
this.minTime = minTime;
39+
return this;
40+
}
41+
42+
public StateChannelClosesRequest maxTime(String maxTime) {
43+
this.maxTime = maxTime;
44+
return this;
45+
}
46+
47+
public StateChannelClosesRequest limit(Integer limit) {
48+
this.limit = limit;
49+
return this;
50+
}
51+
52+
public StateChannelClosesResponse execute() throws IOException {
53+
ArrayList<Pair> queryParams = new ArrayList<>();
54+
queryParams.add(Pair.create(FieldConstant.CURSOR, cursor));
55+
queryParams.add(Pair.create(FieldConstant.MIN_TIME, minTime));
56+
queryParams.add(Pair.create(FieldConstant.MAX_TIME, maxTime));
57+
queryParams.add(Pair.create(FieldConstant.LIMIT, limit));
58+
Call call = client.buildCall(UrlConstant.STATE_CHANNELS_PATH, HttpMethod.GET, queryParams, null, null);
59+
Type type = TypeToken.get(StateChannelClosesResponse.class).getType();
60+
return execute(call, type);
61+
}
62+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package mobi.appcent.helium.response.statechannel;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Data;
5+
import mobi.appcent.helium.model.statechannel.StateChannelCloseTransaction;
6+
7+
import java.util.List;
8+
9+
/**
10+
* Created by erenalpaslan on 3.12.2022
11+
*/
12+
@Data
13+
@AllArgsConstructor
14+
public class StateChannelClosesResponse {
15+
private List<StateChannelCloseTransaction> data;
16+
private String cursor;
17+
}

0 commit comments

Comments
 (0)