mirror of
https://github.com/mempool/mempool.git
synced 2025-02-26 15:42:17 +01:00
58 lines
2 KiB
TypeScript
58 lines
2 KiB
TypeScript
import config from '../../config';
|
|
import { Application, Request, Response } from 'express';
|
|
import nodesApi from './nodes.api';
|
|
import channelsApi from './channels.api';
|
|
import statisticsApi from './statistics.api';
|
|
class GeneralLightningRoutes {
|
|
constructor() { }
|
|
|
|
public initRoutes(app: Application) {
|
|
app
|
|
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/search', this.$searchNodesAndChannels)
|
|
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/statistics/latest', this.$getGeneralStats)
|
|
.get(config.MEMPOOL.API_URL_PREFIX + 'lightning/statistics/:interval', this.$getStatistics)
|
|
;
|
|
}
|
|
|
|
private async $searchNodesAndChannels(req: Request, res: Response) {
|
|
if (typeof req.query.searchText !== 'string') {
|
|
res.status(400).send('Missing parameter: searchText');
|
|
return;
|
|
}
|
|
try {
|
|
const nodes = await nodesApi.$searchNodeByPublicKeyOrAlias(req.query.searchText);
|
|
const channels = await channelsApi.$searchChannelsById(req.query.searchText);
|
|
res.json({
|
|
nodes: nodes,
|
|
channels: channels,
|
|
});
|
|
} catch (e) {
|
|
res.status(500).send(e instanceof Error ? e.message : e);
|
|
}
|
|
}
|
|
|
|
private async $getStatistics(req: Request, res: Response) {
|
|
try {
|
|
const statistics = await statisticsApi.$getStatistics(req.params.interval);
|
|
const statisticsCount = await statisticsApi.$getStatisticsCount();
|
|
res.header('Pragma', 'public');
|
|
res.header('Cache-control', 'public');
|
|
res.header('X-total-count', statisticsCount.toString());
|
|
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
|
|
res.json(statistics);
|
|
} catch (e) {
|
|
res.status(500).send(e instanceof Error ? e.message : e);
|
|
}
|
|
}
|
|
|
|
private async $getGeneralStats(req: Request, res: Response) {
|
|
try {
|
|
const statistics = await statisticsApi.$getLatestStatistics();
|
|
res.json(statistics);
|
|
} catch (e) {
|
|
res.status(500).send(e instanceof Error ? e.message : e);
|
|
}
|
|
}
|
|
}
|
|
|
|
export default new GeneralLightningRoutes();
|