UNPKG

@ethersphere/bee-js

Version:
133 lines (132 loc) 6.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.asBin = exports.pingPeer = exports.getTopology = exports.removePeer = exports.getBlocklist = exports.getPeers = exports.getNodeAddresses = void 0; const cafe_utility_1 = require("cafe-utility"); const http_1 = require("../../utils/http"); const typed_bytes_1 = require("../../utils/typed-bytes"); async function getNodeAddresses(requestOptions) { const response = await (0, http_1.http)(requestOptions, { url: 'addresses', responseType: 'json', }); const body = cafe_utility_1.Types.asObject(response.data, { name: 'response.data' }); return { overlay: new typed_bytes_1.PeerAddress(cafe_utility_1.Types.asString(body.overlay, { name: 'overlay' })), underlay: cafe_utility_1.Types.asArray(body.underlay, { name: 'underlay' }).map(x => cafe_utility_1.Types.asString(x, { name: 'underlay' })), ethereum: new typed_bytes_1.EthAddress(cafe_utility_1.Types.asString(body.ethereum, { name: 'ethereum' })), publicKey: new typed_bytes_1.PublicKey(cafe_utility_1.Types.asString(body.publicKey, { name: 'publicKey' })), pssPublicKey: new typed_bytes_1.PublicKey(cafe_utility_1.Types.asString(body.pssPublicKey, { name: 'pssPublicKey' })), }; } exports.getNodeAddresses = getNodeAddresses; async function getPeers(requestOptions) { const response = await (0, http_1.http)(requestOptions, { url: 'peers', responseType: 'json', }); const body = cafe_utility_1.Types.asObject(response.data, { name: 'response.data' }); return cafe_utility_1.Types.asArray(body.peers, { name: 'peers' }).map(x => ({ address: cafe_utility_1.Types.asString(cafe_utility_1.Types.asObject(x, { name: 'peer' }).address, { name: 'address' }), fullNode: cafe_utility_1.Types.asBoolean(cafe_utility_1.Types.asObject(x, { name: 'peer' }).fullNode, { name: 'fullNode' }), })); } exports.getPeers = getPeers; async function getBlocklist(requestOptions) { const response = await (0, http_1.http)(requestOptions, { url: 'blocklist', responseType: 'json', }); return response.data.peers; } exports.getBlocklist = getBlocklist; async function removePeer(requestOptions, peer) { const response = await (0, http_1.http)(requestOptions, { url: `peers/${peer}`, responseType: 'json', method: 'DELETE', }); return response.data; } exports.removePeer = removePeer; async function getTopology(requestOptions) { const response = await (0, http_1.http)(requestOptions, { url: `topology`, responseType: 'json', }); const body = cafe_utility_1.Types.asObject(response.data, { name: 'response.data' }); const bins = cafe_utility_1.Types.asObject(body.bins, { name: 'bins' }); return { baseAddr: cafe_utility_1.Types.asString(body.baseAddr, { name: 'baseAddr' }), population: cafe_utility_1.Types.asNumber(body.population, { name: 'population' }), connected: cafe_utility_1.Types.asNumber(body.connected, { name: 'connected' }), timestamp: cafe_utility_1.Types.asString(body.timestamp, { name: 'timestamp' }), nnLowWatermark: cafe_utility_1.Types.asNumber(body.nnLowWatermark, { name: 'nnLowWatermark' }), depth: cafe_utility_1.Types.asNumber(body.depth, { name: 'depth' }), reachability: cafe_utility_1.Types.asString(body.reachability, { name: 'reachability' }), networkAvailability: cafe_utility_1.Types.asString(body.networkAvailability, { name: 'networkAvailability' }), bins: { bin_0: asBin(bins.bin_0, 'bin_0'), bin_1: asBin(bins.bin_1, 'bin_1'), bin_2: asBin(bins.bin_2, 'bin_2'), bin_3: asBin(bins.bin_3, 'bin_3'), bin_4: asBin(bins.bin_4, 'bin_4'), bin_5: asBin(bins.bin_5, 'bin_5'), bin_6: asBin(bins.bin_6, 'bin_6'), bin_7: asBin(bins.bin_7, 'bin_7'), bin_8: asBin(bins.bin_8, 'bin_8'), bin_9: asBin(bins.bin_9, 'bin_9'), bin_10: asBin(bins.bin_10, 'bin_10'), bin_11: asBin(bins.bin_11, 'bin_11'), bin_12: asBin(bins.bin_12, 'bin_12'), bin_13: asBin(bins.bin_13, 'bin_13'), bin_14: asBin(bins.bin_14, 'bin_14'), bin_15: asBin(bins.bin_15, 'bin_15'), bin_16: asBin(bins.bin_16, 'bin_16'), bin_17: asBin(bins.bin_17, 'bin_17'), bin_18: asBin(bins.bin_18, 'bin_18'), bin_19: asBin(bins.bin_19, 'bin_19'), bin_20: asBin(bins.bin_20, 'bin_20'), bin_21: asBin(bins.bin_21, 'bin_21'), bin_22: asBin(bins.bin_22, 'bin_22'), bin_23: asBin(bins.bin_23, 'bin_23'), bin_24: asBin(bins.bin_24, 'bin_24'), bin_25: asBin(bins.bin_25, 'bin_25'), bin_26: asBin(bins.bin_26, 'bin_26'), bin_27: asBin(bins.bin_27, 'bin_27'), bin_28: asBin(bins.bin_28, 'bin_28'), bin_29: asBin(bins.bin_29, 'bin_29'), bin_30: asBin(bins.bin_30, 'bin_30'), bin_31: asBin(bins.bin_31, 'bin_31'), }, }; } exports.getTopology = getTopology; async function pingPeer(requestOptions, peer) { const response = await (0, http_1.http)(requestOptions, { url: `pingpong/${peer}`, responseType: 'json', method: 'POST', }); return response.data; } exports.pingPeer = pingPeer; function asBin(value, name) { const bin = cafe_utility_1.Types.asObject(value, { name }); if (!bin.disconnectedPeers) { bin.disconnectedPeers = []; } if (!bin.connectedPeers) { bin.connectedPeers = []; } return { population: cafe_utility_1.Types.asNumber(bin.population, { name: 'population' }), connected: cafe_utility_1.Types.asNumber(bin.connected, { name: 'connected' }), connectedPeers: cafe_utility_1.Types.asArray(bin.connectedPeers, { name: 'connectedPeers' }).map(x => ({ address: cafe_utility_1.Types.asString(cafe_utility_1.Types.asObject(x, { name: 'connectedPeer' }).address, { name: 'address' }), })), disconnectedPeers: cafe_utility_1.Types.asArray(bin.disconnectedPeers, { name: 'disconnectedPeers' }).map(x => ({ address: cafe_utility_1.Types.asString(cafe_utility_1.Types.asObject(x, { name: 'disconnectedPeer' }).address, { name: 'address' }), })), }; } exports.asBin = asBin;