From c3e6fb5b88daeb270bc9b33c7ca64c7f661fd7c5 Mon Sep 17 00:00:00 2001 From: ShahanaFarooqui Date: Tue, 24 Oct 2023 15:29:20 -0700 Subject: [PATCH] More api fixes --- backend/controllers/cln/channels.js | 9 ++++----- backend/controllers/cln/network.js | 2 +- backend/controllers/cln/payments.js | 12 +++++++----- backend/controllers/cln/peers.js | 1 + server/controllers/cln/channels.ts | 9 ++++----- server/controllers/cln/network.ts | 2 +- server/controllers/cln/payments.ts | 12 +++++++----- server/controllers/cln/peers.ts | 1 + src/app/cln/store/cln.effects.ts | 8 +------- 9 files changed, 27 insertions(+), 29 deletions(-) diff --git a/backend/controllers/cln/channels.js b/backend/controllers/cln/channels.js index 4cff1821..89a195cc 100644 --- a/backend/controllers/cln/channels.js +++ b/backend/controllers/cln/channels.js @@ -12,12 +12,12 @@ export const listPeerChannels = (req, res, next) => { } options.url = req.session.selectedNode.ln_server_url + '/v1/listpeerchannels'; request.post(options).then((body) => { - body.channels.map((channel) => { + body.channels.forEach((channel) => { const local = channel.to_us_msat || 0; const remote = (channel.total_msat - local) || 0; const total = channel.total_msat || 0; // return getAliasForChannel(channel).then(channelAlias => { - return { + channel = { peer_id: channel.peer_id, peer_connected: channel.peer_connected, opener: channel.opener, @@ -44,9 +44,8 @@ export const listPeerChannels = (req, res, next) => { balancedness: (total === 0) ? 1 : (1 - Math.abs((local - remote) / total)).toFixed(3) }; }); - }).then((listPeerChannels) => { - logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Channels', msg: 'Peer Channels List Received', data: listPeerChannels }); - res.status(200).json(listPeerChannels); + logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Channels', msg: 'Peer Channels List Received', data: body.channels }); + res.status(200).json(body.channels); }).catch((errRes) => { const err = common.handleError(errRes, 'Channels', 'List Peer Channels Error', req.session.selectedNode); return res.status(err.statusCode).json({ message: err.message, error: err.error }); diff --git a/backend/controllers/cln/network.js b/backend/controllers/cln/network.js index fc034374..4e7771fb 100644 --- a/backend/controllers/cln/network.js +++ b/backend/controllers/cln/network.js @@ -59,7 +59,7 @@ export const listNodes = (req, res, next) => { return res.status(options.statusCode).json({ message: options.message, error: options.error }); } const queryStr = req.query.liquidity_ads ? '?liquidity_ads=' + req.query.liquidity_ads : ''; - options.url = req.session.selectedNode.ln_server_url + '/v1/listNodes'; + options.url = req.session.selectedNode.ln_server_url + '/v1/listnodes'; options.form = req.params.id ? { id: req.params.id } : null; logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Network', msg: 'List Nodes URL' + options.url }); request.post(options).then((body) => { diff --git a/backend/controllers/cln/payments.js b/backend/controllers/cln/payments.js index ec56bc9b..c468b524 100644 --- a/backend/controllers/cln/payments.js +++ b/backend/controllers/cln/payments.js @@ -70,13 +70,15 @@ export const listPayments = (req, res, next) => { return res.status(options.statusCode).json({ message: options.message, error: options.error }); } options.url = req.session.selectedNode.ln_server_url + '/v1/listsendpays'; - req.body.bolt11 = req.query.invoice || null; - req.body.payment_hash = req.query.payment_hash || null; - req.body.status = req.query.status || null; - options.form = req.body; + const { invoice, payment_hash, status } = req.query; + options.form = { + ...(invoice && { bolt11: invoice }), + ...(payment_hash && { payment_hash }), + ...(status && { status }) + }; request.post(options).then((body) => { logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Payments', msg: 'Payment List Received', data: body.payments }); - res.status(200).json(groupBy(body.payments)); + res.status(200).json(body.payments && body.payments.length && body.payments.length > 0 ? groupBy(body.payments) : []); }).catch((errRes) => { const err = common.handleError(errRes, 'Payments', 'List Payments Error', req.session.selectedNode); return res.status(err.statusCode).json({ message: err.message, error: err.error }); diff --git a/backend/controllers/cln/peers.js b/backend/controllers/cln/peers.js index bcf71292..4a2f5514 100644 --- a/backend/controllers/cln/peers.js +++ b/backend/controllers/cln/peers.js @@ -16,6 +16,7 @@ export const getPeers = (req, res, next) => { peer.alias = peer.peer_id.substring(0, 20); return peer; }); + res.status(200).json(body.peers || []); // Promise.all(body.peers.map((peer) => getAliasForPeer(peer))).then((peerList) => { // logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Peers', msg: 'Peers with Alias Received', data: body }); // res.status(200).json(peerList || []); diff --git a/server/controllers/cln/channels.ts b/server/controllers/cln/channels.ts index 8b6c1608..60d98197 100644 --- a/server/controllers/cln/channels.ts +++ b/server/controllers/cln/channels.ts @@ -11,12 +11,12 @@ export const listPeerChannels = (req, res, next) => { if (options.error) { return res.status(options.statusCode).json({ message: options.message, error: options.error }); } options.url = req.session.selectedNode.ln_server_url + '/v1/listpeerchannels'; request.post(options).then((body) => { - body.channels.map((channel) => { + body.channels.forEach((channel) => { const local = channel.to_us_msat || 0; const remote = (channel.total_msat - local) || 0; const total = channel.total_msat || 0; // return getAliasForChannel(channel).then(channelAlias => { - return { + channel = { peer_id: channel.peer_id, peer_connected: channel.peer_connected, opener: channel.opener, @@ -43,9 +43,8 @@ export const listPeerChannels = (req, res, next) => { balancedness: (total === 0) ? 1 : (1 - Math.abs((local - remote) / total)).toFixed(3) }; }); - }).then((listPeerChannels) => { - logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Channels', msg: 'Peer Channels List Received', data: listPeerChannels }); - res.status(200).json(listPeerChannels); + logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Channels', msg: 'Peer Channels List Received', data: body.channels }); + res.status(200).json(body.channels); }).catch((errRes) => { const err = common.handleError(errRes, 'Channels', 'List Peer Channels Error', req.session.selectedNode); return res.status(err.statusCode).json({ message: err.message, error: err.error }); diff --git a/server/controllers/cln/network.ts b/server/controllers/cln/network.ts index 268bd7d5..3686b854 100644 --- a/server/controllers/cln/network.ts +++ b/server/controllers/cln/network.ts @@ -55,7 +55,7 @@ export const listNodes = (req, res, next) => { options = common.getOptions(req); if (options.error) { return res.status(options.statusCode).json({ message: options.message, error: options.error }); } const queryStr = req.query.liquidity_ads ? '?liquidity_ads=' + req.query.liquidity_ads : ''; - options.url = req.session.selectedNode.ln_server_url + '/v1/listNodes'; + options.url = req.session.selectedNode.ln_server_url + '/v1/listnodes'; options.form = req.params.id ? { id: req.params.id } : null; logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Network', msg: 'List Nodes URL' + options.url }); request.post(options).then((body) => { diff --git a/server/controllers/cln/payments.ts b/server/controllers/cln/payments.ts index a4e7b7fa..dc3d46ad 100644 --- a/server/controllers/cln/payments.ts +++ b/server/controllers/cln/payments.ts @@ -61,13 +61,15 @@ export const listPayments = (req, res, next) => { options = common.getOptions(req); if (options.error) { return res.status(options.statusCode).json({ message: options.message, error: options.error }); } options.url = req.session.selectedNode.ln_server_url + '/v1/listsendpays'; - req.body.bolt11 = req.query.invoice || null; - req.body.payment_hash = req.query.payment_hash || null; - req.body.status = req.query.status || null; - options.form = req.body; + const { invoice, payment_hash, status } = req.query; + options.form = { + ...(invoice && { bolt11: invoice }), + ...(payment_hash && { payment_hash }), + ...(status && { status }) + }; request.post(options).then((body) => { logger.log({ selectedNode: req.session.selectedNode, level: 'DEBUG', fileName: 'Payments', msg: 'Payment List Received', data: body.payments }); - res.status(200).json(groupBy(body.payments)); + res.status(200).json(body.payments && body.payments.length && body.payments.length > 0 ? groupBy(body.payments) : []); }).catch((errRes) => { const err = common.handleError(errRes, 'Payments', 'List Payments Error', req.session.selectedNode); return res.status(err.statusCode).json({ message: err.message, error: err.error }); diff --git a/server/controllers/cln/peers.ts b/server/controllers/cln/peers.ts index d130da6a..6b48d701 100644 --- a/server/controllers/cln/peers.ts +++ b/server/controllers/cln/peers.ts @@ -15,6 +15,7 @@ export const getPeers = (req, res, next) => { peer.alias = peer.peer_id.substring(0, 20); return peer; }); + res.status(200).json(body.peers || []); // Promise.all(body.peers.map((peer) => getAliasForPeer(peer))).then((peerList) => { // logger.log({ selectedNode: req.session.selectedNode, level: 'INFO', fileName: 'Peers', msg: 'Peers with Alias Received', data: body }); // res.status(200).json(peerList || []); diff --git a/src/app/cln/store/cln.effects.ts b/src/app/cln/store/cln.effects.ts index ba7da7ad..ac1742d0 100644 --- a/src/app/cln/store/cln.effects.ts +++ b/src/app/cln/store/cln.effects.ts @@ -29,7 +29,6 @@ import { CLNOfferInformationComponent } from '../transactions/offers/offer-infor export class CLNEffects implements OnDestroy { CHILD_API_URL = API_URL + '/cln'; - API_VERION = ''; CLN_VERISON = ''; private flgInitialized = false; private unSubs: Array> = [new Subject(), new Subject(), new Subject()]; @@ -96,7 +95,6 @@ export class CLNEffects implements OnDestroy { takeUntil(this.actions.pipe(ofType(RTLActions.SET_SELECTED_NODE))), map((info) => { this.logger.info(info); - this.API_VERION = info.api_version || ''; this.CLN_VERISON = info.version || ''; if (info.chains && info.chains.length && info.chains[0] && (typeof info.chains[0] === 'object' && info.chains[0].hasOwnProperty('chain') && info?.chains[0].chain && @@ -330,11 +328,7 @@ export class CLNEffects implements OnDestroy { ofType(CLNActions.FETCH_CHANNELS_CLN), mergeMap(() => { this.store.dispatch(updateCLNAPICallStatus({ payload: { action: 'FetchChannels', status: APICallStatusEnum.INITIATED } })); - const listChannelsEndpoint = - this.commonService.isVersionCompatible(this.CLN_VERISON, '23.02') && - this.commonService.isVersionCompatible(this.API_VERION, '0.10.3') ? - '/listPeerChannels' : '/listChannels'; - return this.httpClient.get(this.CHILD_API_URL + API_END_POINTS.CHANNELS_API + listChannelsEndpoint); + return this.httpClient.get(this.CHILD_API_URL + API_END_POINTS.CHANNELS_API + '/listPeerChannels'); }), map((channels: Channel[]) => { this.logger.info(channels);