import request from 'request-promise' ;
import { Logger } from '../../utils/logger.js' ;
import { Common } from '../../utils/common.js' ;
let options = null ;
const logger = Logger ;
const common = 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 } ) ;
}
options . url = req . session . selectedNode . ln _server _url + '/v1/getroute' ;
options . body = { id : req . params . destPubkey , amount _msat : req . params . amount , riskfactor : ( req . query . riskFactor || 0 ) } ;
request . post ( options ) . then ( ( body ) => {
logger . log ( { selectedNode : req . session . selectedNode , level : 'INFO' , fileName : 'Network' , msg : 'Network Routes Received' , data : body } ) ;
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 } ) ;
} ) ;
} ;
export const listChannels = ( req , res , next ) => {
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 } ) ;
}
options . url = req . session . selectedNode . ln _server _url + '/v1/listchannels' ;
options . body = req . params . channelShortId ? { short _channel _id : req . params . channelShortId } : null ;
request . post ( options ) . then ( ( body ) => {
logger . log ( { selectedNode : req . session . selectedNode , level : 'INFO' , fileName : 'Network' , msg : 'Channel Lookup Finished' , data : body } ) ;
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 } ) ;
}
options . url = req . session . selectedNode . ln _server _url + '/v1/feerates' ;
options . body = req . params . feeRateStyle ? { style : req . params . feeRateStyle } : null ;
request . post ( options ) . then ( ( body ) => {
logger . log ( { selectedNode : req . session . selectedNode , level : 'INFO' , fileName : 'Network' , msg : 'Network Fee Rates Received for ' + req . params . feeRateStyle , data : body } ) ;
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 } ) ;
} ) ;
} ;
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 } ) ;
}
const queryStr = req . query . liquidity _ads ? '?liquidity_ads=' + req . query . liquidity _ads : '' ;
options . url = req . session . selectedNode . ln _server _url + '/v1/listNodes' ;
options . body = 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 ) => {
logger . log ( { selectedNode : req . session . selectedNode , level : 'INFO' , fileName : 'Network' , msg : 'List Nodes Finished' , data : body } ) ;
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 ) ;
} ) . 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 } ) ;
} ) ;
} ;