2021-12-29 23:08:41 +00:00
import request from 'request-promise' ;
import { Logger , LoggerService } from '../../utils/logger.js' ;
import { Common , CommonService } from '../../utils/common.js' ;
2023-10-31 22:06:39 +00:00
import { CommonSelectedNode } from '../../models/config.model.js' ;
2021-12-29 23:08:41 +00:00
let options = null ;
const logger : LoggerService = Logger ;
const common : CommonService = Common ;
export const getRoute = ( req , res , next ) = > {
logger . log ( { selectedNode : req.session.selectedNode , level : 'INFO' , fileName : 'Network' , msg : 'Getting Network Routes..' } ) ;
options = common . getOptions ( req ) ;
if ( options . error ) { return res . status ( options . statusCode ) . json ( { message : options.message , error : options.error } ) ; }
2023-10-24 03:35:46 +00:00
options . url = req . session . selectedNode . ln_server_url + '/v1/getroute' ;
2023-10-26 03:47:08 +00:00
options . body = { id : req.params.destPubkey , amount_msat : req.params.amount , riskfactor : ( req . query . riskFactor || 0 ) } ;
2023-10-18 02:22:08 +00:00
request . post ( options ) . then ( ( body ) = > {
2022-01-16 20:55:50 +00:00
logger . log ( { selectedNode : req.session.selectedNode , level : 'INFO' , fileName : 'Network' , msg : 'Network Routes Received' , data : body } ) ;
2021-12-29 23:08:41 +00:00
res . status ( 200 ) . json ( { routes : body } ) ;
} ) . catch ( ( errRes ) = > {
const err = common . handleError ( errRes , 'Network' , 'Query Routes Error' , req . session . selectedNode ) ;
return res . status ( err . statusCode ) . json ( { message : err.message , error : err.error } ) ;
} ) ;
} ;
2023-10-24 03:35:46 +00:00
export const listChannels = ( req , res , next ) = > {
2021-12-29 23:08:41 +00:00
logger . log ( { selectedNode : req.session.selectedNode , level : 'INFO' , fileName : 'Network' , msg : 'Channel Lookup..' } ) ;
options = common . getOptions ( req ) ;
if ( options . error ) { return res . status ( options . statusCode ) . json ( { message : options.message , error : options.error } ) ; }
2023-10-24 03:35:46 +00:00
options . url = req . session . selectedNode . ln_server_url + '/v1/listchannels' ;
2023-10-26 03:47:08 +00:00
options . body = req . params . channelShortId ? { short_channel_id : req.params.channelShortId } : null ;
2023-10-18 02:22:08 +00:00
request . post ( options ) . then ( ( body ) = > {
2022-01-16 20:55:50 +00:00
logger . log ( { selectedNode : req.session.selectedNode , level : 'INFO' , fileName : 'Network' , msg : 'Channel Lookup Finished' , data : body } ) ;
2021-12-29 23:08:41 +00:00
res . status ( 200 ) . json ( body ) ;
} ) . catch ( ( errRes ) = > {
const err = common . handleError ( errRes , 'Network' , 'Channel Lookup Error' , req . session . selectedNode ) ;
return res . status ( err . statusCode ) . json ( { message : err.message , error : err.error } ) ;
} ) ;
} ;
export const feeRates = ( req , res , next ) = > {
logger . log ( { selectedNode : req.session.selectedNode , level : 'INFO' , fileName : 'Network' , msg : 'Getting Network Fee Rates..' } ) ;
options = common . getOptions ( req ) ;
if ( options . error ) { return res . status ( options . statusCode ) . json ( { message : options.message , error : options.error } ) ; }
2023-10-24 03:35:46 +00:00
options . url = req . session . selectedNode . ln_server_url + '/v1/feerates' ;
2023-10-26 03:47:08 +00:00
options . body = req . params . feeRateStyle ? { style : req.params.feeRateStyle } : null ;
2023-10-18 02:22:08 +00:00
request . post ( options ) . then ( ( body ) = > {
2022-01-16 20:55:50 +00:00
logger . log ( { selectedNode : req.session.selectedNode , level : 'INFO' , fileName : 'Network' , msg : 'Network Fee Rates Received for ' + req . params . feeRateStyle , data : body } ) ;
2021-12-29 23:08:41 +00:00
res . status ( 200 ) . json ( body ) ;
} ) . catch ( ( errRes ) = > {
const err = common . handleError ( errRes , 'Network' , 'Fee Rates Error' , req . session . selectedNode ) ;
return res . status ( err . statusCode ) . json ( { message : err.message , error : err.error } ) ;
} ) ;
} ;
2022-05-17 02:53:13 +00:00
export const listNodes = ( req , res , next ) = > {
logger . log ( { selectedNode : req.session.selectedNode , level : 'INFO' , fileName : 'Network' , msg : 'List Nodes..' } ) ;
options = common . getOptions ( req ) ;
if ( options . error ) { return res . status ( options . statusCode ) . json ( { message : options.message , error : options.error } ) ; }
2023-10-24 22:29:20 +00:00
options . url = req . session . selectedNode . ln_server_url + '/v1/listnodes' ;
2022-05-19 19:47:41 +00:00
logger . log ( { selectedNode : req.session.selectedNode , level : 'DEBUG' , fileName : 'Network' , msg : 'List Nodes URL' + options . url } ) ;
2023-10-18 02:22:08 +00:00
request . post ( options ) . then ( ( body ) = > {
2022-05-17 02:53:13 +00:00
logger . log ( { selectedNode : req.session.selectedNode , level : 'INFO' , fileName : 'Network' , msg : 'List Nodes Finished' , data : body } ) ;
2023-10-24 03:35:46 +00:00
let response = body . nodes ;
if ( req . query . liquidity_ads && typeof req . query . liquidity_ads === 'string' && req . query . liquidity_ads . toLowerCase ( ) === 'yes' ) {
response = body . nodes . filter ( ( node ) = > {
if ( node . option_will_fund ) {
node . option_will_fund . lease_fee_base_msat = ( node . option_will_fund . lease_fee_base_msat && typeof node . option_will_fund . lease_fee_base_msat === 'string' &&
node . option_will_fund . lease_fee_base_msat . includes ( 'msat' ) ) ? node . option_will_fund . lease_fee_base_msat ? . replace ( 'msat' , '' ) : node . option_will_fund . lease_fee_base_msat ;
node . option_will_fund . channel_fee_max_base_msat = ( node . option_will_fund . channel_fee_max_base_msat && typeof node . option_will_fund . channel_fee_max_base_msat === 'string' &&
node . option_will_fund . channel_fee_max_base_msat . includes ( 'msat' ) ) ? node . option_will_fund . channel_fee_max_base_msat ? . replace ( 'msat' , '' ) : node . option_will_fund . channel_fee_max_base_msat ;
}
return node ;
} ) ;
}
res . status ( 200 ) . json ( response ) ;
2022-05-17 02:53:13 +00:00
} ) . catch ( ( errRes ) = > {
const err = common . handleError ( errRes , 'Network' , 'Node Lookup Error' , req . session . selectedNode ) ;
return res . status ( err . statusCode ) . json ( { message : err.message , error : err.error } ) ;
} ) ;
} ;
2023-10-31 22:06:39 +00:00
export const getAlias = ( selNode : CommonSelectedNode , id : string ) = > {
options . url = selNode . ln_server_url + '/v1/listnodes' ;
if ( ! id ) {
logger . log ( { selectedNode : selNode , level : 'ERROR' , fileName : 'Network' , msg : 'Empty Peer ID' } ) ;
return Promise . resolve ( '' ) ;
}
options . body = { id } ;
return request . post ( options ) . then ( ( body ) = > {
logger . log ( { selectedNode : selNode , level : 'DEBUG' , fileName : 'Network' , msg : 'Peer Alias Finished' , data : body } ) ;
return body . nodes [ 0 ] ? body . nodes [ 0 ] . alias : id.substring ( 0 , 20 ) ;
} ) . catch ( ( errRes ) = > {
common . handleError ( errRes , 'Network' , 'Peer Alias Error' , selNode ) ;
return id . substring ( 0 , 20 ) ;
} ) ;
} ;