-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #5 from KurtThiemann/pools
Add support for credit pool API methods
- Loading branch information
Showing
15 changed files
with
378 additions
and
54 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 |
---|---|---|
@@ -0,0 +1,137 @@ | ||
const GetPoolRequest = require("../../Request/Billing/Pool/GetPoolRequest.js"); | ||
const GetPoolMembersRequest = require("../../Request/Billing/Pool/GetPoolMembersRequest.js"); | ||
const GetPoolServersRequest = require("../../Request/Billing/Pool/GetPoolServersRequest.js"); | ||
|
||
class Pool { | ||
/** | ||
* @type {Client} | ||
* @private | ||
*/ | ||
#client; | ||
|
||
/** | ||
* Pool ID | ||
* | ||
* @type {string} | ||
*/ | ||
id; | ||
|
||
/** | ||
* Pool name | ||
* | ||
* @type {string} | ||
*/ | ||
name; | ||
|
||
/** | ||
* Pool credit balance | ||
* | ||
* @type {number} | ||
*/ | ||
credits; | ||
|
||
/** | ||
* Pool server count | ||
* | ||
* @type {number} | ||
*/ | ||
servers; | ||
|
||
/** | ||
* Pool owner ID | ||
* | ||
* @type {string} | ||
*/ | ||
owner; | ||
|
||
/** | ||
* Is pool owner | ||
* | ||
* @type {boolean} | ||
*/ | ||
isOwner; | ||
|
||
/** | ||
* Pool member count | ||
* | ||
* @type {number} | ||
*/ | ||
members; | ||
|
||
/** | ||
* Share of this pool owned by the current account | ||
* | ||
* @type {number} | ||
*/ | ||
ownShare; | ||
|
||
/** | ||
* Credits in this pool owned by the current account | ||
* | ||
* @type {number} | ||
*/ | ||
ownCredits; | ||
|
||
/** | ||
* Pool constructor | ||
* | ||
* @param {Client} client | ||
* @param {string} id | ||
*/ | ||
constructor(client, id) { | ||
this.#client = client; | ||
this.id = id; | ||
} | ||
|
||
/** | ||
* @param {{}} poolObject | ||
* @return {this} | ||
*/ | ||
setFromObject(poolObject) { | ||
this.id = typeof poolObject.id !== "undefined" ? poolObject.id : null; | ||
this.name = typeof poolObject.name !== "undefined" ? poolObject.name : null; | ||
this.credits = typeof poolObject.credits !== "undefined" ? poolObject.credits : null; | ||
this.servers = typeof poolObject.servers !== "undefined" ? poolObject.servers : null; | ||
this.owner = typeof poolObject.owner !== "undefined" ? poolObject.owner : null; | ||
this.isOwner = typeof poolObject.isOwner !== "undefined" ? poolObject.isOwner : null; | ||
this.members = typeof poolObject.members !== "undefined" ? poolObject.members : null; | ||
this.ownShare = typeof poolObject.ownShare !== "undefined" ? poolObject.ownShare : null; | ||
this.ownCredits = typeof poolObject.ownCredits !== "undefined" ? poolObject.ownCredits : null; | ||
|
||
return this; | ||
} | ||
|
||
/** | ||
* Get credit pool info | ||
* | ||
* @return {this} | ||
* @throws {RequestError} | ||
*/ | ||
async get() { | ||
let response = await this.#client.request(new GetPoolRequest(this.id)); | ||
this.setFromObject(response.getData()); | ||
return this; | ||
} | ||
|
||
/** | ||
* Get pool members | ||
* | ||
* @return {Promise<PoolMember[]>} | ||
*/ | ||
async getMembers() { | ||
let response = await this.#client.request(new GetPoolMembersRequest(this.id)); | ||
return response.getData(); | ||
} | ||
|
||
/** | ||
* Get pool servers | ||
* | ||
* @return {Promise<Server[]>} | ||
*/ | ||
async getServers() { | ||
let response = await this.#client.request(new GetPoolServersRequest(this.id)); | ||
return response.getData(); | ||
} | ||
} | ||
|
||
module.exports = Pool; |
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,52 @@ | ||
|
||
class PoolMember { | ||
/** | ||
* Pool member account ID | ||
* | ||
* @type {string} | ||
*/ | ||
account; | ||
|
||
/** | ||
* Pool member name | ||
* | ||
* @type {string} | ||
*/ | ||
name; | ||
|
||
/** | ||
* Pool member share | ||
* | ||
* @type {number} | ||
*/ | ||
share; | ||
|
||
/** | ||
* Pool member credits | ||
* | ||
* @type {number} | ||
*/ | ||
credits; | ||
|
||
/** | ||
* Is pool owner | ||
* | ||
* @type {boolean} | ||
*/ | ||
isOwner; | ||
|
||
/** | ||
* Pool member constructor | ||
* | ||
* @param {{}} poolMemberObject | ||
*/ | ||
constructor(poolMemberObject) { | ||
this.account = typeof poolMemberObject.account !== "undefined" ? poolMemberObject.account : null; | ||
this.name = typeof poolMemberObject.name !== "undefined" ? poolMemberObject.name : null; | ||
this.share = typeof poolMemberObject.share !== "undefined" ? poolMemberObject.share : null; | ||
this.credits = typeof poolMemberObject.credits !== "undefined" ? poolMemberObject.credits : null; | ||
this.isOwner = typeof poolMemberObject.isOwner !== "undefined" ? poolMemberObject.isOwner : null; | ||
} | ||
} | ||
|
||
module.exports = PoolMember; |
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 |
---|---|---|
@@ -0,0 +1,9 @@ | ||
const PoolRequest = require("./PoolRequest.js"); | ||
const PoolMembersResponse = require("../../../Response/PoolMembersResponse.js"); | ||
|
||
class GetPoolMembersRequest extends PoolRequest { | ||
endpoint = "billing/pools/{id}/members"; | ||
responseClass = PoolMembersResponse; | ||
} | ||
|
||
module.exports = GetPoolMembersRequest; |
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,7 @@ | ||
const PoolRequest = require("./PoolRequest.js"); | ||
|
||
class GetPoolRequest extends PoolRequest { | ||
endpoint = "billing/pools/{id}"; | ||
} | ||
|
||
module.exports = GetPoolRequest; |
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,9 @@ | ||
const PoolRequest = require("./PoolRequest.js"); | ||
const ServersResponse = require("../../../Response/ServersResponse.js"); | ||
|
||
class GetPoolServersRequest extends PoolRequest { | ||
endpoint = "billing/pools/{id}/servers"; | ||
responseClass = ServersResponse; | ||
} | ||
|
||
module.exports = GetPoolServersRequest; |
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,9 @@ | ||
const Request = require('../../Request'); | ||
const PoolsResponse = require("../../../Response/PoolsResponse.js"); | ||
|
||
class GetPoolsRequest extends Request { | ||
endpoint = "billing/pools"; | ||
responseClass = PoolsResponse; | ||
} | ||
|
||
module.exports = GetPoolsRequest; |
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,15 @@ | ||
const Request = require('../../Request.js'); | ||
|
||
class PoolRequest extends Request { | ||
/** | ||
* Pool request constructor | ||
* | ||
* @param {string} id | ||
*/ | ||
constructor(id) { | ||
super(); | ||
this.setParameter("id", id); | ||
} | ||
} | ||
|
||
module.exports = PoolRequest; |
Oops, something went wrong.