UNPKG

rhamt-vscode-extension

Version:

RHAMT VSCode extension

97 lines (86 loc) 3.64 kB
import * as express from 'express'; import * as path from "path"; import * as bodyParser from "body-parser"; import * as http from 'http'; import * as io from 'socket.io'; import { ConfigController } from './config.ctrl'; import { RhamtModelService } from 'raas-core'; import { Endpoint } from '../server/endpoint'; export class ConfigServer { public app: express.Application; private _server?: http.Server; private _configCtrl?: ConfigController; private endpoint: Endpoint; constructor(endpoint: Endpoint, private _modelService: RhamtModelService) { this.endpoint = endpoint; } public start(): void { this.app = express(); this._server = this.app.listen(this.endpoint.port); let listener = io.listen(this._server); this._configCtrl = new ConfigController(this._modelService); listener.sockets.on('connection', socket => { console.log(`socket (${socket.id}) connected`); socket.on('log', (...args: any[]) => { this.log('from client: ', ...args); }); socket.on('details', (data: any) => { console.log('server attempting to get details for: ' + data.id); let config = this._modelService.getConfiguration(data.id); if (config) { console.log('got config!!!'); } else { console.log('couldnt find config'); } // if (!data.id || !config) { // console.log(`config (${data.id}) not found`); // socket.emit('notFound', {config: {id: data.id}}); // socket.disconnect(); // } // if (data.id !== this.config.id) { // console.log(`server with config ${this.config.id} doesn't match requested ${data.id}`); // socket.emit('missmatch', {message: `server with config ${this.config.id} doesn't match requested ${data.id}`}); // socket.disconnect(); // } // else if (config) { // } }); }); this.configServer(); this.routes(); } private configServer() { if (this.app) { this.app.set("views", path.join(__dirname, '..', '..', 'resources', 'views')); this.app.set("view engine", "jade"); this.app.use(express.static(__dirname+'/../../resources')); this.app.use("/node_modules", express.static(__dirname+'/../../node_modules')); this.app.use("/out", express.static(__dirname+'/../../out')); //mount logger //this.app.use(logger("dev")); this.app.use(bodyParser.json()); this.app.use(bodyParser.urlencoded({ extended: true })); this.app.use(function(err: any, req: express.Request, res: express.Response, next: express.NextFunction) { err.status = 404; next(err); }); } } private routes() { if (this.app && this._configCtrl) { let router = express.Router(); router.get("/:id", this._configCtrl.get.bind(this._configCtrl)); router.post("/:id", this._configCtrl.update.bind(this._configCtrl)); this.app.use(router); } } public dispose(): void { if (this._server) { this._server.close(); } } private log(message: string, ...args: any[]) { console.log(message, ...args); } }