Merge pull request #4879 from mempool/nymkappa/proxy-accel-endpoints
[accelerator] proxy acceleration api to prod
This commit is contained in:
		
						commit
						c14e8797e2
					
				
							
								
								
									
										75
									
								
								backend/src/api/acceleration/acceleration.routes.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								backend/src/api/acceleration/acceleration.routes.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,75 @@
 | 
				
			|||||||
 | 
					import { Application, Request, Response } from "express";
 | 
				
			||||||
 | 
					import config from "../../config";
 | 
				
			||||||
 | 
					import axios from "axios";
 | 
				
			||||||
 | 
					import logger from "../../logger";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class AccelerationRoutes {
 | 
				
			||||||
 | 
					  private tag = 'Accelerator';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public initRoutes(app: Application) {
 | 
				
			||||||
 | 
					    app
 | 
				
			||||||
 | 
					      .get(config.MEMPOOL.API_URL_PREFIX + 'services/accelerator/accelerations', this.$getAcceleratorAccelerations.bind(this))
 | 
				
			||||||
 | 
					      .get(config.MEMPOOL.API_URL_PREFIX + 'services/accelerator/accelerations/history', this.$getAcceleratorAccelerationsHistory.bind(this))
 | 
				
			||||||
 | 
					      .get(config.MEMPOOL.API_URL_PREFIX + 'services/accelerator/accelerations/history/aggregated', this.$getAcceleratorAccelerationsHistoryAggregated.bind(this))
 | 
				
			||||||
 | 
					      .get(config.MEMPOOL.API_URL_PREFIX + 'services/accelerator/accelerations/stats', this.$getAcceleratorAccelerationsStats.bind(this))
 | 
				
			||||||
 | 
					    ;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private async $getAcceleratorAccelerations(req: Request, res: Response) {
 | 
				
			||||||
 | 
					    const url = `${config.MEMPOOL_SERVICES.API}/${req.originalUrl.replace('/api/v1/services/', '')}`;
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      const response = await axios.get(url, { responseType: 'stream', timeout: 10000 });
 | 
				
			||||||
 | 
					      for (const key in response.headers) {
 | 
				
			||||||
 | 
					        res.setHeader(key, response.headers[key]); 
 | 
				
			||||||
 | 
					      }      
 | 
				
			||||||
 | 
					      response.data.pipe(res);
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      logger.err(`Unable to get current accelerations from ${url} in $getAcceleratorAccelerations(), ${e}`, this.tag);
 | 
				
			||||||
 | 
					      res.status(500).end();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private async $getAcceleratorAccelerationsHistory(req: Request, res: Response) {
 | 
				
			||||||
 | 
					    const url = `${config.MEMPOOL_SERVICES.API}/${req.originalUrl.replace('/api/v1/services/', '')}`;
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      const response = await axios.get(url, { responseType: 'stream', timeout: 10000 });
 | 
				
			||||||
 | 
					      for (const key in response.headers) {
 | 
				
			||||||
 | 
					        res.setHeader(key, response.headers[key]); 
 | 
				
			||||||
 | 
					      }      
 | 
				
			||||||
 | 
					      response.data.pipe(res);
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      logger.err(`Unable to get acceleration history from ${url} in $getAcceleratorAccelerationsHistory(), ${e}`, this.tag);
 | 
				
			||||||
 | 
					      res.status(500).end();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private async $getAcceleratorAccelerationsHistoryAggregated(req: Request, res: Response) {
 | 
				
			||||||
 | 
					    const url = `${config.MEMPOOL_SERVICES.API}/${req.originalUrl.replace('/api/v1/services/', '')}`;
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      const response = await axios.get(url, { responseType: 'stream', timeout: 10000 });
 | 
				
			||||||
 | 
					      for (const key in response.headers) {
 | 
				
			||||||
 | 
					        res.setHeader(key, response.headers[key]); 
 | 
				
			||||||
 | 
					      }      
 | 
				
			||||||
 | 
					      response.data.pipe(res);
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      logger.err(`Unable to get aggregated acceleration history from ${url} in $getAcceleratorAccelerationsHistoryAggregated(), ${e}`, this.tag);
 | 
				
			||||||
 | 
					      res.status(500).end();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private async $getAcceleratorAccelerationsStats(req: Request, res: Response) {
 | 
				
			||||||
 | 
					    const url = `${config.MEMPOOL_SERVICES.API}/${req.originalUrl.replace('/api/v1/services/', '')}`;
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      const response = await axios.get(url, { responseType: 'stream', timeout: 10000 });
 | 
				
			||||||
 | 
					      for (const key in response.headers) {
 | 
				
			||||||
 | 
					        res.setHeader(key, response.headers[key]); 
 | 
				
			||||||
 | 
					      }      
 | 
				
			||||||
 | 
					      response.data.pipe(res);
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      logger.err(`Unable to get acceleration stats from ${url} in $getAcceleratorAccelerationsStats(), ${e}`, this.tag);
 | 
				
			||||||
 | 
					      res.status(500).end();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default new AccelerationRoutes();
 | 
				
			||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
import logger from '../logger';
 | 
					import logger from '../../logger';
 | 
				
			||||||
import { MempoolTransactionExtended } from '../mempool.interfaces';
 | 
					import { MempoolTransactionExtended } from '../../mempool.interfaces';
 | 
				
			||||||
import { IEsploraApi } from './bitcoin/esplora-api.interface';
 | 
					import { IEsploraApi } from '../bitcoin/esplora-api.interface';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const BLOCK_WEIGHT_UNITS = 4_000_000;
 | 
					const BLOCK_WEIGHT_UNITS = 4_000_000;
 | 
				
			||||||
const BLOCK_SIGOPS = 80_000;
 | 
					const BLOCK_SIGOPS = 80_000;
 | 
				
			||||||
@ -43,6 +43,7 @@ import redisCache from './api/redis-cache';
 | 
				
			|||||||
import accelerationApi from './api/services/acceleration';
 | 
					import accelerationApi from './api/services/acceleration';
 | 
				
			||||||
import bitcoinCoreRoutes from './api/bitcoin/bitcoin-core.routes';
 | 
					import bitcoinCoreRoutes from './api/bitcoin/bitcoin-core.routes';
 | 
				
			||||||
import bitcoinSecondClient from './api/bitcoin/bitcoin-second-client';
 | 
					import bitcoinSecondClient from './api/bitcoin/bitcoin-second-client';
 | 
				
			||||||
 | 
					import accelerationRoutes from './api/acceleration/acceleration.routes';
 | 
				
			||||||
import aboutRoutes from './api/about.routes';
 | 
					import aboutRoutes from './api/about.routes';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Server {
 | 
					class Server {
 | 
				
			||||||
@ -306,6 +307,9 @@ class Server {
 | 
				
			|||||||
      nodesRoutes.initRoutes(this.app);
 | 
					      nodesRoutes.initRoutes(this.app);
 | 
				
			||||||
      channelsRoutes.initRoutes(this.app);
 | 
					      channelsRoutes.initRoutes(this.app);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    if (config.MEMPOOL_SERVICES.ACCELERATIONS) {
 | 
				
			||||||
 | 
					      accelerationRoutes.initRoutes(this.app);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    aboutRoutes.initRoutes(this.app);
 | 
					    aboutRoutes.initRoutes(this.app);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
import { AccelerationInfo, makeBlockTemplate } from '../api/acceleration';
 | 
					import { AccelerationInfo, makeBlockTemplate } from '../api/acceleration/acceleration';
 | 
				
			||||||
import { RowDataPacket } from 'mysql2';
 | 
					import { RowDataPacket } from 'mysql2';
 | 
				
			||||||
import DB from '../database';
 | 
					import DB from '../database';
 | 
				
			||||||
import logger from '../logger';
 | 
					import logger from '../logger';
 | 
				
			||||||
@ -7,7 +7,7 @@ import { Common } from '../api/common';
 | 
				
			|||||||
import config from '../config';
 | 
					import config from '../config';
 | 
				
			||||||
import blocks from '../api/blocks';
 | 
					import blocks from '../api/blocks';
 | 
				
			||||||
import accelerationApi, { Acceleration } from '../api/services/acceleration';
 | 
					import accelerationApi, { Acceleration } from '../api/services/acceleration';
 | 
				
			||||||
import accelerationCosts from '../api/acceleration';
 | 
					import accelerationCosts from '../api/acceleration/acceleration';
 | 
				
			||||||
import bitcoinApi from '../api/bitcoin/bitcoin-api-factory';
 | 
					import bitcoinApi from '../api/bitcoin/bitcoin-api-factory';
 | 
				
			||||||
import transactionUtils from '../api/transaction-utils';
 | 
					import transactionUtils from '../api/transaction-utils';
 | 
				
			||||||
import { BlockExtended, MempoolTransactionExtended } from '../mempool.interfaces';
 | 
					import { BlockExtended, MempoolTransactionExtended } from '../mempool.interfaces';
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user