feat(v5): Adding v5 route

This commit is contained in:
Chris Troutner
2021-05-18 22:05:28 -07:00
parent 7eca556322
commit 6da385c90e
53 changed files with 21086 additions and 0 deletions
+49
View File
@@ -39,6 +39,21 @@ const EncryptionV4 = require('./routes/v4/encryption')
const PriceV4 = require('./routes/v4/price')
const Ninsight = require('./routes/v4/ninsight')
// v5
const healthCheckV5 = require('./routes/v5/health-check')
const BlockchainV5 = require('./routes/v5/full-node/blockchain')
const ControlV5 = require('./routes/v5/full-node/control')
const MiningV5 = require('./routes/v5/full-node/mining')
const networkV5 = require('./routes/v5/full-node/network')
const RawtransactionsV5 = require('./routes/v5/full-node/rawtransactions')
const UtilV5 = require('./routes/v5/util')
const SlpV5 = require('./routes/v5/slp')
const xpubV5 = require('./routes/v5/xpub')
const ElectrumXV5 = require('./routes/v5/electrumx')
const EncryptionV5 = require('./routes/v5/encryption')
const PriceV5 = require('./routes/v5/price')
// const Ninsight = require('./routes/v5/ninsight')
require('dotenv').config()
// Instantiate v4 route libraries.
@@ -53,6 +68,18 @@ const encryptionv4 = new EncryptionV4()
const pricev4 = new PriceV4()
const utilV4 = new UtilV4({ electrumx: electrumxv4 })
// Instantiate v5 route libraries.
const blockchainV5 = new BlockchainV5()
const controlV5 = new ControlV5()
const miningV5 = new MiningV5()
const rawtransactionsV5 = new RawtransactionsV5()
const slpV5 = new SlpV5()
const electrumxv5 = new ElectrumXV5()
electrumxv5.connect()
const encryptionv5 = new EncryptionV5()
const pricev5 = new PriceV5()
const utilV5 = new UtilV5({ electrumx: electrumxv5 })
const app = express()
app.locals.env = process.env
@@ -94,12 +121,14 @@ app.use(express.static(path.join(__dirname, 'public')))
app.use('/', logReqInfo)
const v4prefix = 'v4'
const v5prefix = 'v5'
// START Rate Limits
const auth = new AuthMW()
// Ensure req.locals and res.locals objects exist.
app.use(`/${v4prefix}/`, rateLimits.populateLocals)
app.use(`/${v5prefix}/`, rateLimits.populateLocals)
// Allow users to turn off rate limits with an environment variable.
const DO_NOT_USE_RATE_LIMITS = process.env.DO_NOT_USE_RATE_LIMITS || false
@@ -110,13 +139,16 @@ if (!DO_NOT_USE_RATE_LIMITS) {
console.log('Rate limits are being used')
// Inspect the header for a JWT token.
app.use(`/${v4prefix}/`, jwtAuth.getTokenFromHeaders)
app.use(`/${v5prefix}/`, jwtAuth.getTokenFromHeaders)
// Instantiate the authorization middleware, used to implement pro-tier rate limiting.
// Handles Anonymous and Basic Authorization schemes used by passport.js
app.use(`/${v4prefix}/`, auth.mw())
app.use(`/${v5prefix}/`, auth.mw())
// Experimental rate limits
app.use(`/${v4prefix}/`, rateLimits.applyRateLimits)
app.use(`/${v5prefix}/`, rateLimits.applyRateLimits)
// Rate limit on all v4 routes
// Establish and enforce rate limits.
@@ -143,6 +175,23 @@ app.use(`/${v4prefix}/` + 'util', utilV4.router)
const ninsight = new Ninsight()
app.use(`/${v4prefix}/` + 'ninsight', ninsight.router)
// Connect v5 routes
app.use(`/${v5prefix}/` + 'health-check', healthCheckV5)
app.use(`/${v5prefix}/` + 'blockchain', blockchainV5.router)
app.use(`/${v5prefix}/` + 'control', controlV5.router)
app.use(`/${v5prefix}/` + 'mining', miningV5.router)
app.use(`/${v5prefix}/` + 'network', networkV5)
app.use(`/${v5prefix}/` + 'rawtransactions', rawtransactionsV5.router)
app.use(`/${v5prefix}/` + 'slp', slpV5.router)
app.use(`/${v5prefix}/` + 'xpub', xpubV5.router)
app.use(`/${v5prefix}/` + 'electrumx', electrumxv5.router)
app.use(`/${v5prefix}/` + 'encryption', encryptionv5.router)
app.use(`/${v5prefix}/` + 'price', pricev5.router)
app.use(`/${v5prefix}/` + 'util', utilV5.router)
// const ninsight = new Ninsight()
app.use(`/${v5prefix}/` + 'ninsight', ninsight.router)
// catch 404 and forward to error handler
app.use((req, res, next) => {
const err = {