mirror of
https://github.com/Permissionless-Software-Foundation/ipfs-bch-wallet-consumer.git
synced 2026-09-23 01:32:02 -07:00
99 lines
2.5 KiB
JavaScript
99 lines
2.5 KiB
JavaScript
/*
|
|
REST API Controller library for the /ipfs route
|
|
*/
|
|
|
|
const { wlogger } = require('../../../adapters/wlogger')
|
|
|
|
let _this
|
|
|
|
class IpfsRESTControllerLib {
|
|
constructor (localConfig = {}) {
|
|
// Dependency Injection.
|
|
this.adapters = localConfig.adapters
|
|
if (!this.adapters) {
|
|
throw new Error(
|
|
'Instance of Adapters library required when instantiating /ipfs REST Controller.'
|
|
)
|
|
}
|
|
this.useCases = localConfig.useCases
|
|
if (!this.useCases) {
|
|
throw new Error(
|
|
'Instance of Use Cases library required when instantiating /ipfs REST Controller.'
|
|
)
|
|
}
|
|
|
|
// Encapsulate dependencies
|
|
// this.UserModel = this.adapters.localdb.Users
|
|
// this.userUseCases = this.useCases.user
|
|
|
|
_this = this
|
|
}
|
|
|
|
/**
|
|
* @api {get} /ipfs Get status on IPFS infrastructure
|
|
* @apiPermission public
|
|
* @apiName GetIpfsStatus
|
|
* @apiGroup REST BCH
|
|
*
|
|
* @apiExample Example usage:
|
|
* curl -H "Content-Type: application/json" -X GET localhost:5001/ipfs
|
|
*
|
|
*/
|
|
async getStatus (ctx) {
|
|
try {
|
|
const status = await _this.adapters.ipfs.getStatus()
|
|
|
|
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)
|
|
}
|
|
}
|
|
|
|
// DRY error handler
|
|
handleError (ctx, err) {
|
|
// If an HTTP status is specified by the buisiness logic, use that.
|
|
if (err.status) {
|
|
if (err.message) {
|
|
ctx.throw(err.status, err.message)
|
|
} else {
|
|
ctx.throw(err.status)
|
|
}
|
|
} else {
|
|
// By default use a 422 error if the HTTP status is not specified.
|
|
ctx.throw(422, err.message)
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = IpfsRESTControllerLib
|