You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.6 KiB

// hive.js
// Copyright (C) 2022 DTP Technologies, LLC
// License: Apache-2.0
'use strict';
const path = require('path');
const express = require('express');
const { SiteController } = require('../../lib/site-lib');
class HiveController extends SiteController {
constructor (dtp) {
super(dtp, module.exports);
this.services = [ ];
}
async start ( ) {
const router = express.Router();
this.dtp.app.use('/hive', router);
router.use(
async (req, res, next) => {
res.locals.currentView = 'hive';
/*
* TODO: H1V3 authentication before processing request (HTTP Bearer token)
*/
return next();
},
);
router.use('/kaleidoscope', await this.loadChild(path.join(__dirname, 'hive', 'kaleidoscope')));
this.services.push({ name: 'kaleidoscope', url: '/hive/kaleidoscope' });
router.use('/user', await this.loadChild(path.join(__dirname, 'hive', 'user')));
this.services.push({ name: 'user', url: '/hive/user' });
router.get('/', this.getHiveRoot.bind(this));
return router;
}
async getHiveRoot (req, res) {
res.locals.hiveView = 'home';
res.status(200).json({
pkg: { name: this.dtp.pkg.name, version: this.dtp.pkg.version },
component: this.component,
host: this.dtp.pkg.name,
description: this.dtp.pkg.description,
version: this.dtp.pkg.version,
services: this.services,
});
}
}
module.exports = {
logId: 'ctl:hive',
index: 'hive',
className: 'HiveController',
create: async (dtp) => { return new HiveController(dtp); },
};