@ethersphere/bee-js
Version:
Javascript client for Bee
110 lines • 2.93 kB
JavaScript
import { Types } from 'cafe-utility';
import { http } from "../../utils/http.js";
import { BZZ } from "../../utils/tokens.js";
import { asNumberString } from "../../utils/type.js";
const balancesEndpoint = 'balances';
const consumedEndpoint = 'consumed';
/**
* Get the balances with all known peers including prepaid services
*
* @param requestOptions Options for making requests
*/
export async function getAllBalances(requestOptions) {
const response = await http(requestOptions, {
url: balancesEndpoint,
responseType: 'json'
});
const body = Types.asObject(response.data, {
name: 'response.data'
});
const balances = Types.asArray(body.balances, {
name: 'balances'
}).map(x => Types.asObject(x, {
name: 'balance'
}));
return {
balances: balances.map(x => ({
peer: Types.asString(x.peer, {
name: 'peer'
}),
balance: BZZ.fromPLUR(asNumberString(x.balance, {
name: 'balance'
}))
}))
};
}
/**
* Get the balances with a specific peer including prepaid services
*
* @param requestOptions Options for making requests
* @param address Swarm address of peer
*/
export async function getPeerBalance(requestOptions, address) {
const response = await http(requestOptions, {
url: `${balancesEndpoint}/${address}`,
responseType: 'json'
});
const body = Types.asObject(response.data, {
name: 'response.data'
});
return {
peer: Types.asString(body.peer, {
name: 'peer'
}),
balance: BZZ.fromPLUR(asNumberString(body.balance, {
name: 'balance'
}))
};
}
/**
* Get the past due consumption balances with all known peers
*
* @param requestOptions Options for making requests
*/
export async function getPastDueConsumptionBalances(requestOptions) {
const response = await http(requestOptions, {
url: consumedEndpoint,
responseType: 'json'
});
const body = Types.asObject(response.data, {
name: 'response.data'
});
const balances = Types.asArray(body.balances, {
name: 'balances'
}).map(x => Types.asObject(x, {
name: 'balance'
}));
return {
balances: balances.map(x => ({
peer: Types.asString(x.peer, {
name: 'peer'
}),
balance: BZZ.fromPLUR(asNumberString(x.balance, {
name: 'balance'
}))
}))
};
}
/**
* Get the past due consumption balance with a specific peer
*
* @param requestOptions Options for making requests
* @param address Swarm address of peer
*/
export async function getPastDueConsumptionPeerBalance(requestOptions, address) {
const response = await http(requestOptions, {
url: `${consumedEndpoint}/${address}`,
responseType: 'json'
});
const body = Types.asObject(response.data, {
name: 'response.data'
});
return {
peer: Types.asString(body.peer, {
name: 'peer'
}),
balance: BZZ.fromPLUR(asNumberString(body.balance, {
name: 'balance'
}))
};
}