-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
246bef9
commit b783961
Showing
13 changed files
with
554 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
- Add endpoints for the server config | ||
- Add endpoints for the server config | ||
- Add endpoints for credit pools |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
227 changes: 227 additions & 0 deletions
227
src/main/java/com/exaroton/api/billing/pools/CreditPool.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,227 @@ | ||
package com.exaroton.api.billing.pools; | ||
|
||
import com.exaroton.api.APIException; | ||
import com.exaroton.api.ExarotonClient; | ||
import com.exaroton.api.request.billing.pools.GetCreditPoolMembersRequest; | ||
import com.exaroton.api.request.billing.pools.GetCreditPoolRequest; | ||
import com.exaroton.api.request.billing.pools.GetCreditPoolServersRequest; | ||
import com.exaroton.api.server.Server; | ||
import org.jetbrains.annotations.NotNull; | ||
|
||
public class CreditPool { | ||
/** | ||
* Has this pool been fetched from the API yet | ||
*/ | ||
private boolean fetched; | ||
|
||
/** | ||
* The unique id of the pool | ||
*/ | ||
private final @NotNull String id; | ||
|
||
/** | ||
* The display name of the pool | ||
*/ | ||
private String name; | ||
|
||
/** | ||
* The current amount of credits in the pool | ||
*/ | ||
private double credits; | ||
|
||
/** | ||
* The number of servers in the pool | ||
*/ | ||
private int servers; | ||
|
||
/** | ||
* The id of the user that owns the pool | ||
*/ | ||
private String owner; | ||
|
||
/** | ||
* Is the current user the owner of the pool | ||
*/ | ||
private boolean isOwner; | ||
|
||
/** | ||
* The number of members in the pool | ||
*/ | ||
private int members; | ||
|
||
/** | ||
* The share of credits in the pool that belong to the current user | ||
*/ | ||
private double ownShare; | ||
|
||
/** | ||
* The amount of credits in the pool that belong to the current user | ||
*/ | ||
private double ownCredits; | ||
|
||
/** | ||
* The client used to create this pool | ||
*/ | ||
private @NotNull transient ExarotonClient client; | ||
|
||
public CreditPool(@NotNull ExarotonClient client, @NotNull String id) { | ||
this.client = client; | ||
this.id = id; | ||
} | ||
|
||
/** | ||
* Get the unique id of the pool | ||
* @return unique pool id | ||
*/ | ||
public String getId() { | ||
return id; | ||
} | ||
|
||
/** | ||
* Get the display name of the pool | ||
* @return pool display name | ||
*/ | ||
public String getName() { | ||
return name; | ||
} | ||
|
||
/** | ||
* Get the current amount of credits in the pool | ||
* @return amount of credits in the pool | ||
*/ | ||
public double getCredits() { | ||
return credits; | ||
} | ||
|
||
/** | ||
* Get the number of servers in the pool | ||
* @return number of servers in the pool | ||
*/ | ||
public int getServers() { | ||
return servers; | ||
} | ||
|
||
/** | ||
* Get the id of the user that owns the pool | ||
* @return pool owner id | ||
*/ | ||
public String getOwner() { | ||
return owner; | ||
} | ||
|
||
/** | ||
* Is the current user the owner of the pool | ||
* @return is the current user the owner of the pool | ||
*/ | ||
public boolean isOwner() { | ||
return isOwner; | ||
} | ||
|
||
/** | ||
* Get the number of members in the pool | ||
* @return number of members in the pool | ||
*/ | ||
public int getMembers() { | ||
return members; | ||
} | ||
|
||
/** | ||
* Get the share of credits in the pool that belong to the current user | ||
* @return share of credits in the pool that belong to the current user | ||
*/ | ||
public double getOwnShare() { | ||
return ownShare; | ||
} | ||
|
||
/** | ||
* Get the amount of credits in the pool that belong to the current user | ||
* @return amount of credits in the pool that belong to the current user | ||
*/ | ||
public double getOwnCredits() { | ||
return ownCredits; | ||
} | ||
|
||
/** | ||
* Set the exaroton client used for further requests | ||
* @param client exaroton client | ||
* @return updated pool object | ||
*/ | ||
public CreditPool setClient(ExarotonClient client) { | ||
this.client = client; | ||
return this; | ||
} | ||
|
||
/** | ||
* Mark this pool as fetched from the API | ||
* @return updated pool object | ||
*/ | ||
public CreditPool setFetched() { | ||
this.fetched = true; | ||
return this; | ||
} | ||
|
||
/** | ||
* Fetch the Credit Pool from the API | ||
* @return full credit pool | ||
* @throws APIException connection or API errors | ||
*/ | ||
public CreditPool get() throws APIException { | ||
this.fetched = true; | ||
GetCreditPoolRequest request = new GetCreditPoolRequest(this.client, this.id); | ||
return this.setFromObject(request.request().getData()); | ||
} | ||
|
||
/** | ||
* Fetch the Credit Pool from the API if it hasn't been fetched yet | ||
* @return full credit pool | ||
* @throws APIException connection or API errors | ||
*/ | ||
public CreditPool getIfNotFetched() throws APIException { | ||
if (!this.fetched) { | ||
return this.get(); | ||
} | ||
return this; | ||
} | ||
|
||
/** | ||
* Get a list of members in this pool | ||
* @return array of pool members | ||
* @throws APIException connection or API errors | ||
*/ | ||
public CreditPoolMember[] getMemberList() throws APIException { | ||
GetCreditPoolMembersRequest request = new GetCreditPoolMembersRequest(this.client, this.id); | ||
return request.request().getData(); | ||
} | ||
|
||
/** | ||
* Get a list of servers in this pool | ||
* @return array of pool servers | ||
* @throws APIException connection or API errors | ||
*/ | ||
public Server[] getServerList() throws APIException { | ||
GetCreditPoolServersRequest request = new GetCreditPoolServersRequest(this.client, this.id); | ||
Server[] servers = request.request().getData(); | ||
for (Server server: servers) { | ||
server.setClient(this.client); | ||
server.fetched = true; | ||
} | ||
return servers; | ||
} | ||
|
||
/** | ||
* update properties from fetched object | ||
* @param pool pool fetched from the API | ||
* @return updated pool object | ||
*/ | ||
private CreditPool setFromObject(CreditPool pool) { | ||
this.name = pool.getName(); | ||
this.credits = pool.getCredits(); | ||
this.servers = pool.getServers(); | ||
this.owner = pool.getOwner(); | ||
this.isOwner = pool.isOwner(); | ||
this.members = pool.getMembers(); | ||
this.ownShare = pool.getOwnShare(); | ||
this.ownCredits = pool.getOwnCredits(); | ||
return this; | ||
} | ||
} |
Oops, something went wrong.