diff --git a/src/controllers/rest-api/index.js b/src/controllers/rest-api/index.js index 3537539..74d5175 100644 --- a/src/controllers/rest-api/index.js +++ b/src/controllers/rest-api/index.js @@ -13,6 +13,7 @@ import ContactRESTController from './contact/index.js' import LogsRESTController from './logs/index.js' import IpfsRESTController from './ipfs/index.js' import config from '../../../config/index.js' +import UsageRESTController from './usage/index.js' class RESTControllers { constructor (localConfig = {}) { @@ -64,6 +65,10 @@ class RESTControllers { // Attach the REST API Controllers associated with the /ipfs route const ipfsRESTController = new IpfsRESTController(dependencies) ipfsRESTController.attach(app) + + // Attach the REST API Controllers associated with the /usage route + const usageRESTController = new UsageRESTController(dependencies) + usageRESTController.attach(app) } } diff --git a/src/controllers/rest-api/usage/controller.js b/src/controllers/rest-api/usage/controller.js index d883288..4c05da7 100644 --- a/src/controllers/rest-api/usage/controller.js +++ b/src/controllers/rest-api/usage/controller.js @@ -7,7 +7,7 @@ // Local libraries import wlogger from '../../../adapters/wlogger.js' -class IpfsRESTControllerLib { +class UsageRESTControllerLib { constructor (localConfig = {}) { // Dependency Injection. this.adapters = localConfig.adapters @@ -29,97 +29,27 @@ class IpfsRESTControllerLib { // Bind 'this' object to all subfunctions this.getStatus = this.getStatus.bind(this) - this.getPeers = this.getPeers.bind(this) - this.getRelays = this.getRelays.bind(this) this.handleError = this.handleError.bind(this) - this.connect = this.connect.bind(this) - this.getThisNode = this.getThisNode.bind(this) } /** - * @api {get} /ipfs Get status on IPFS infrastructure + * @api {get} /usage Get status on IPFS infrastructure * @apiPermission public - * @apiName GetIpfsStatus - * @apiGroup REST BCH + * @apiName GetUsageStatus + * @apiGroup REST Usage * * @apiExample Example usage: - * curl -H "Content-Type: application/json" -X GET localhost:5001/ipfs + * curl -H "Content-Type: application/json" -X GET localhost:5020/usage * */ async getStatus (ctx) { try { - const status = await this.adapters.ipfs.getStatus() + // const status = await this.adapters.ipfs.getStatus() + const status = await this.useCases.usage.getRestSummary() ctx.body = { status } } catch (err) { - wlogger.error('Error in ipfs/controller.js/getStatus(): ') - // ctx.throw(422, err.message) - this.handleError(ctx, err) - } - } - - // Return information on IPFS peers this node is connected to. - async getPeers (ctx) { - try { - const showAll = ctx.request.body.showAll - - const peers = await this.adapters.ipfs.getPeers(showAll) - - ctx.body = { peers } - } catch (err) { - wlogger.error('Error in ipfs/controller.js/getPeers(): ') - // ctx.throw(422, err.message) - this.handleError(ctx, err) - } - } - - // Get data about the known Circuit Relays. Hydrate with data from peers list. - async getRelays (ctx) { - try { - const relays = await this.adapters.ipfs.getRelays() - - ctx.body = { relays } - } catch (err) { - wlogger.error('Error in ipfs/controller.js/getRelays(): ') - // ctx.throw(422, err.message) - this.handleError(ctx, err) - } - } - - async connect (ctx) { - try { - const multiaddr = ctx.request.body.multiaddr - const getDetails = ctx.request.body.getDetails - - // console.log('this.adapters.ipfs.ipfsCoordAdapter.ipfsCoord.adapters.ipfs: ', this.adapters.ipfs.ipfsCoordAdapter.ipfsCoord.adapters.ipfs) - const result = await this.adapters.ipfs.ipfsCoordAdapter.ipfsCoord.adapters.ipfs.connectToPeer({ multiaddr, getDetails }) - // console.log('result: ', result) - - ctx.body = result - } catch (err) { - wlogger.error('Error in ipfs/controller.js/connect():', err) - // ctx.throw(422, err.message) - this.handleError(ctx, err) - } - } - - /** - * @api {get} /ipfs/node Get a copy of the thisNode object from helia-coord - * @apiPermission public - * @apiName GetThisNode - * @apiGroup REST BCH - * - * @apiExample Example usage: - * curl -H "Content-Type: application/json" -X GET localhost:5001/ipfs/node - * - */ - async getThisNode (ctx) { - try { - const thisNode = this.adapters.ipfs.ipfsCoordAdapter.ipfsCoord.thisNode - - ctx.body = { thisNode } - } catch (err) { - wlogger.error('Error in ipfs/controller.js/getThisNode(): ') + wlogger.error('Error in usage/controller.js/getStatus(): ') // ctx.throw(422, err.message) this.handleError(ctx, err) } @@ -142,4 +72,4 @@ class IpfsRESTControllerLib { } // module.exports = IpfsRESTControllerLib -export default IpfsRESTControllerLib +export default UsageRESTControllerLib diff --git a/src/controllers/rest-api/usage/index.js b/src/controllers/rest-api/usage/index.js index 1bf0d11..64733b2 100644 --- a/src/controllers/rest-api/usage/index.js +++ b/src/controllers/rest-api/usage/index.js @@ -6,12 +6,12 @@ import Router from 'koa-router' // Local libraries. -import IPFSRESTControllerLib from './controller.js' +import UsageRESTControllerLib from './controller.js' import Validators from '../middleware/validators.js' // let _this -class IpfsRouter { +class UsageRouter { constructor (localConfig = {}) { // Dependency Injection. this.adapters = localConfig.adapters @@ -33,11 +33,11 @@ class IpfsRouter { } // Encapsulate dependencies. - this.ipfsRESTController = new IPFSRESTControllerLib(dependencies) + this.usageRESTController = new UsageRESTControllerLib(dependencies) this.validators = new Validators() // Instantiate the router and set the base route. - const baseUrl = '/ipfs' + const baseUrl = '/usage' this.router = new Router({ prefix: baseUrl }) // _this = this @@ -51,11 +51,7 @@ class IpfsRouter { } // Define the routes and attach the controller. - this.router.get('/', this.ipfsRESTController.getStatus) - this.router.post('/peers', this.ipfsRESTController.getPeers) - this.router.post('/relays', this.ipfsRESTController.getRelays) - this.router.post('/connect', this.ipfsRESTController.connect) - this.router.get('/node', this.ipfsRESTController.getThisNode) + this.router.get('/', this.usageRESTController.getStatus) // Attach the Controller routes to the Koa app. app.use(this.router.routes()) @@ -64,4 +60,4 @@ class IpfsRouter { } // module.exports = BchRouter -export default IpfsRouter +export default UsageRouter diff --git a/src/use-cases/index.js b/src/use-cases/index.js index a2ffac6..8ce82b3 100644 --- a/src/use-cases/index.js +++ b/src/use-cases/index.js @@ -4,7 +4,9 @@ https://troutsblog.com/blog/clean-architecture */ +// Local libraries import UserUseCases from './user.js' +import { UsageUseCases } from './usage-use-cases.js' class UseCases { constructor (localConfig = {}) { @@ -17,6 +19,7 @@ class UseCases { // console.log('use-cases/index.js localConfig: ', localConfig) this.user = new UserUseCases(localConfig) + this.usage = new UsageUseCases(localConfig) } // Run any startup Use Cases at the start of the app. diff --git a/src/use-cases/usage-use-cases.js b/src/use-cases/usage-use-cases.js index 5bd0475..0920031 100644 --- a/src/use-cases/usage-use-cases.js +++ b/src/use-cases/usage-use-cases.js @@ -20,6 +20,7 @@ class UsageUseCases { } // Bind 'this' object to all subfunctions + this.getRestSummary = this.getRestSummary.bind(this) // State }