mirror of
https://github.com/mempool/mempool.git
synced 2025-02-26 23:50:16 +01:00
73 lines
3 KiB
TypeScript
73 lines
3 KiB
TypeScript
import { Application, Request, Response } from 'express';
|
|
import config from '../../config';
|
|
import statisticsApi from './statistics-api';
|
|
|
|
class StatisticsRoutes {
|
|
public initRoutes(app: Application) {
|
|
app
|
|
.get(config.MEMPOOL.API_URL_PREFIX + 'statistics/2h', this.$getStatisticsByTime.bind(this, '2h'))
|
|
.get(config.MEMPOOL.API_URL_PREFIX + 'statistics/24h', this.$getStatisticsByTime.bind(this, '24h'))
|
|
.get(config.MEMPOOL.API_URL_PREFIX + 'statistics/1w', this.$getStatisticsByTime.bind(this, '1w'))
|
|
.get(config.MEMPOOL.API_URL_PREFIX + 'statistics/1m', this.$getStatisticsByTime.bind(this, '1m'))
|
|
.get(config.MEMPOOL.API_URL_PREFIX + 'statistics/3m', this.$getStatisticsByTime.bind(this, '3m'))
|
|
.get(config.MEMPOOL.API_URL_PREFIX + 'statistics/6m', this.$getStatisticsByTime.bind(this, '6m'))
|
|
.get(config.MEMPOOL.API_URL_PREFIX + 'statistics/1y', this.$getStatisticsByTime.bind(this, '1y'))
|
|
.get(config.MEMPOOL.API_URL_PREFIX + 'statistics/2y', this.$getStatisticsByTime.bind(this, '2y'))
|
|
.get(config.MEMPOOL.API_URL_PREFIX + 'statistics/3y', this.$getStatisticsByTime.bind(this, '3y'))
|
|
.get(config.MEMPOOL.API_URL_PREFIX + 'statistics/4y', this.$getStatisticsByTime.bind(this, '4y'))
|
|
.get(config.MEMPOOL.API_URL_PREFIX + 'statistics/all', this.$getStatisticsByTime.bind(this, 'all'))
|
|
;
|
|
}
|
|
|
|
private async $getStatisticsByTime(time: '2h' | '24h' | '1w' | '1m' | '3m' | '6m' | '1y' | '2y' | '3y' | '4y' | 'all', req: Request, res: Response) {
|
|
res.header('Pragma', 'public');
|
|
res.header('Cache-control', 'public');
|
|
res.setHeader('Expires', new Date(Date.now() + 1000 * 300).toUTCString());
|
|
|
|
try {
|
|
let result;
|
|
switch (time as string) {
|
|
case '24h':
|
|
result = await statisticsApi.$list24H();
|
|
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
|
|
break;
|
|
case '1w':
|
|
result = await statisticsApi.$list1W();
|
|
break;
|
|
case '1m':
|
|
result = await statisticsApi.$list1M();
|
|
break;
|
|
case '3m':
|
|
result = await statisticsApi.$list3M();
|
|
break;
|
|
case '6m':
|
|
result = await statisticsApi.$list6M();
|
|
break;
|
|
case '1y':
|
|
result = await statisticsApi.$list1Y();
|
|
break;
|
|
case '2y':
|
|
result = await statisticsApi.$list2Y();
|
|
break;
|
|
case '3y':
|
|
result = await statisticsApi.$list3Y();
|
|
break;
|
|
case '4y':
|
|
result = await statisticsApi.$list4Y();
|
|
break;
|
|
case 'all':
|
|
result = await statisticsApi.$listAll();
|
|
break;
|
|
default:
|
|
result = await statisticsApi.$list2H();
|
|
res.setHeader('Expires', new Date(Date.now() + 1000 * 30).toUTCString());
|
|
break;
|
|
}
|
|
res.json(result);
|
|
} catch (e) {
|
|
res.status(500).send(e instanceof Error ? e.message : e);
|
|
}
|
|
}
|
|
}
|
|
|
|
export default new StatisticsRoutes();
|