diff --git a/src/channelManager.ts b/src/channelManager.ts index fb58f1a..55c4ca2 100644 --- a/src/channelManager.ts +++ b/src/channelManager.ts @@ -1,12 +1,9 @@ import ChannelBase from './channels/channelBase'; import ClientBase from './clients/clientBase'; -import MHSClient from './clients/sites/mhsClient'; -import MHSChannel from './channels/sites/mhsChannel'; - -import * as Joi from 'joi'; +import ServicesClient from './clients/servicesClient'; +import StudentProgressMonitorChannel from './channels/services/studentProgressMonitorChannel'; var logger = require('./logger'); -var app = require('./config/app'); class ChannelManager { channels: any = []; @@ -18,8 +15,8 @@ class ChannelManager { } createChannel(data: any) { - var channelExists: ChannelBase|MHSChannel|null = this.channelExists(data.channel); - var channel: ChannelBase|MHSChannel; + var channelExists: ChannelBase|StudentProgressMonitorChannel|null = this.channelExists(data.channel); + var channel: ChannelBase|StudentProgressMonitorChannel; if (channelExists) { channel = channelExists; @@ -43,8 +40,8 @@ class ChannelManager { return null; } - addClientToChannel(client: ClientBase|MHSClient, channel_id: string) { - var channel: ChannelBase|MHSChannel|null = this.channelExists(channel_id); + addClientToChannel(client: ClientBase|ServicesClient, channel_id: string) { + var channel: ChannelBase|StudentProgressMonitorChannel|null = this.channelExists(channel_id); if (channel) { channel.addClient(client); @@ -57,8 +54,10 @@ class ChannelManager { } createByChannelType(data: any) { + var channel_name = data.client.charAt(0).toLowerCase() + data.client.slice(1) + 'Channel' + try { - var Channel = require(`./channels/${data.client_type}s/${data.client}Channel`); + var Channel = require(`./channels/${data.client_type}/${channel_name}`); logger.accessLog.info(`attempting to create channel of type ${data.client}, channel id: ${data.channel}...`); return new Channel(data.channel); } catch (e) { @@ -84,7 +83,7 @@ class ChannelManager { return false; } - changeChannel(client: ClientBase|MHSClient, changeRequest: any) { + changeChannel(client: ClientBase|ServicesClient, changeRequest: any) { if (client.channel != null) { this.removeClientFromChannel(client.id, client.channel.id) } diff --git a/src/channels/channelBase.ts b/src/channels/channelBase.ts index e94ae28..9e76470 100644 --- a/src/channels/channelBase.ts +++ b/src/channels/channelBase.ts @@ -1,18 +1,18 @@ import ClientBase from '../clients/clientBase'; -import MHSClient from '../clients/sites/mhsClient'; +import ServicesClient from '../clients/servicesClient'; var logger = require('../logger'); class ChannelBase { id: string; - clients: MHSClient[]|ClientBase[] = []; + clients: ServicesClient[]|ClientBase[] = []; constructor(id: string) { this.id = id; logger.accessLog.info('Channel Created', {channelId: id}); } - addClient(client: MHSClient|ClientBase) { + addClient(client: ServicesClient|ClientBase) { if (this.clientExists(client.id)) { logger.errorLog.info('Client already exits in channel', {channelId: this.id, clientId: client.id}); return {'status': 'notice', 'message': 'client aleady exists in channel'}; diff --git a/src/channels/sites/mhsChannel.ts b/src/channels/services/studentProgressMonitorChannel.ts similarity index 70% rename from src/channels/sites/mhsChannel.ts rename to src/channels/services/studentProgressMonitorChannel.ts index 43e566c..d0744f4 100644 --- a/src/channels/sites/mhsChannel.ts +++ b/src/channels/services/studentProgressMonitorChannel.ts @@ -1,10 +1,10 @@ -import MHSClient from '../../clients/sites/mhsClient'; +import ServicesClient from '../../clients/servicesClient'; import ChannelBase from '../channelBase'; var logger = require('../../logger'); -class MHSChannel extends ChannelBase { - broadcastMessage(from: MHSClient, message: any) { +class StudentProgressMonitorChannel extends ChannelBase { + broadcastMessage(from: ServicesClient, message: any) { for (let client of this.clients) { if (client != from && client.data.user_type != from.data.user_type) { console.log('sending message: ' + JSON.stringify(message)) @@ -19,5 +19,5 @@ class MHSChannel extends ChannelBase { } }; -module.exports = MHSChannel; -export default MHSChannel; +module.exports = StudentProgressMonitorChannel; +export default StudentProgressMonitorChannel; diff --git a/src/clientManager.ts b/src/clientManager.ts index aff5815..cba1fed 100644 --- a/src/clientManager.ts +++ b/src/clientManager.ts @@ -1,12 +1,12 @@ import * as WebSocket from 'ws'; import ClientBase from './clients/clientBase'; -import MHSClient from './clients/sites/mhsClient'; +import ServicesClient from './clients/servicesClient'; import ChannelManager from './channelManager'; var logger = require('./logger'); class ClientManager { - clients: ClientBase[]|MHSClient[] = []; + clients: ClientBase[]|ServicesClient[] = []; constructor() { //...maybe one day @@ -26,7 +26,7 @@ class ClientManager { } clientsOfType(client_type: string) { - var result: ClientBase[]|MHSClient[] = []; + var result: ClientBase[]|ServicesClient[] = []; for (let client of this.clients) { if (client.type() == client_type) { @@ -67,9 +67,11 @@ class ClientManager { } getClientType(data: any, channelManager: ChannelManager, ws: WebSocket) { + var client_type = data.client_type + 'Client' + try { - var Client = require(`./clients/${data.client_type}s/${data.client}Client`); - logger.accessLog.info(`attempting to create client of type ${data.client}, client id: ${data.user_id}...`); + var Client = require(`./clients/${client_type}`); + logger.accessLog.info(`attempting to create client of type ${data.client_type}, client id: ${data.user_id}...`); return new Client(data, ws, channelManager, this); } catch (e) { logger.errorLog.info(e); diff --git a/src/clients/clientBase.ts b/src/clients/clientBase.ts index 23e966f..1705090 100644 --- a/src/clients/clientBase.ts +++ b/src/clients/clientBase.ts @@ -2,7 +2,7 @@ import * as WebSocket from 'ws'; import ClientManager from '../clientManager'; import ChannelManager from '../channelManager'; import ChannelBase from '../channels/channelBase'; -import MHSChannel from '../channels/sites/mhsChannel'; +import StudentProgressMonitorChannel from '../channels/services/studentProgressMonitorChannel'; var messageManager = require('../messageManager'); var logger = require('../logger'); @@ -11,7 +11,7 @@ class ClientBase { ws: WebSocket; data: any; id: number; - channel: ChannelBase|MHSChannel|null; + channel: ChannelBase|StudentProgressMonitorChannel|null; clientManager: ClientManager; channelManager: ChannelManager; @@ -36,7 +36,7 @@ class ClientBase { return this.data.client; } - connectToChannel(channel: MHSChannel) { + connectToChannel(channel: StudentProgressMonitorChannel) { this.channel = channel; var messageListener = (message: any) => { diff --git a/src/clients/servicesClient.ts b/src/clients/servicesClient.ts new file mode 100644 index 0000000..5451df2 --- /dev/null +++ b/src/clients/servicesClient.ts @@ -0,0 +1,17 @@ +import * as WebSocket from 'ws'; +import ClientBase from './clientBase'; +import ClientManager from '../clientManager'; +import ChannelManager from '../channelManager'; + +var logger = require('../logger'); + +class ServicesClient extends ClientBase { + constructor(data: any, ws: WebSocket, channelManager: ChannelManager, clientManager: ClientManager) { + super(data, ws, channelManager, clientManager); + logger.accessLog.info('Service Client Created', {data: data}); + } +}; + +module.exports = ServicesClient; +export default ServicesClient; + diff --git a/src/clients/sites/mhsClient.ts b/src/clients/sites/mhsClient.ts deleted file mode 100644 index 596ee91..0000000 --- a/src/clients/sites/mhsClient.ts +++ /dev/null @@ -1,17 +0,0 @@ -import * as WebSocket from 'ws'; -import ClientBase from '../clientBase'; -import ClientManager from '../../clientManager'; -import ChannelManager from '../../channelManager'; - -var logger = require('../../logger'); - -class MHSClient extends ClientBase { - constructor(data: any, ws: WebSocket, channelManager: ChannelManager, clientManager: ClientManager) { - super(data, ws, channelManager, clientManager); - logger.accessLog.info('MHS Client Created', {data: data}); - } -}; - -module.exports = MHSClient; -export default MHSClient; - diff --git a/src/server.ts b/src/server.ts index 8809bf8..0221806 100755 --- a/src/server.ts +++ b/src/server.ts @@ -13,7 +13,7 @@ var logger = require('./logger'); import ClientManager from './clientManager'; import ChannelManager from './channelManager'; import ClientBase from './clients/clientBase'; -import MHSClient from './clients/sites/mhsClient'; +import ServicesClient from './clients/servicesClient'; // if (app.environment == 'development') { @@ -55,13 +55,13 @@ function connectionManager() { } if (clientManager.clientExists(data.user_id)) { - var client: ClientBase|MHSClient|null = clientManager.getClient(data.user_id); + var client: ClientBase|ServicesClient|null = clientManager.getClient(data.user_id); if (client != null) { client.replaceWebSocket(ws); } } else { - var client: ClientBase|MHSClient|null = clientManager.addClient(data, channelManager, ws); + var client: ClientBase|ServicesClient|null = clientManager.addClient(data, channelManager, ws); } if (client != null) { @@ -96,5 +96,6 @@ startServer(); module.exports = { clientManager: clientManager, - channelManager: channelManager + channelManager: channelManager, + connectionManager: connectionManager } diff --git a/src/test/channelManager.spec.ts b/src/test/channelManager.spec.ts index ae98652..5c45820 100644 --- a/src/test/channelManager.spec.ts +++ b/src/test/channelManager.spec.ts @@ -1,7 +1,5 @@ import ChannelBase from '../channels/channelBase'; import ClientBase from '../clients/clientBase'; -import MHSClient from '../clients/sites/mhsClient'; -import MHSChannel from '../channels/sites/mhsChannel'; import ChannelManager from '../channelManager'; import ClientManager from '../clientManager'; @@ -35,7 +33,7 @@ describe('ChannelManager', function () { expect(result).to.be.equal(true); }); - it('should not return a channel when serachingif channel exists', function () { + it('should not return a channel when seraching if channel exists', function () { var exists = channelManager.channelExists('no channel'); var result = exists ? true : false; expect(result).to.be.equal(false); @@ -51,7 +49,7 @@ describe('ChannelManager', function () { expect(result.status).to.be.equal('notice'); }); - it('should create a channel of type MHSChannel', function () { + it('should create a channel of type StudentProgressMonitorChannel', function () { var data2 = { 'channel': 'test channel 2', 'client': 'mhs', 'client_type':'site' }; var result = channelManager.createByChannelType(data2); expect(result.id).to.be.equal('test channel 2'); diff --git a/src/test/clientManager.spec.ts b/src/test/clientManager.spec.ts index 4d10d28..962602c 100644 --- a/src/test/clientManager.spec.ts +++ b/src/test/clientManager.spec.ts @@ -1,6 +1,5 @@ import * as WebSocket from 'ws'; import ClientBase from '../clients/clientBase'; -import MHSClient from '../clients/sites/mhsClient'; import ClientManager from '../clientManager'; import ChannelManager from '../channelManager'; @@ -52,9 +51,9 @@ describe('ClientManager', function () { expect(result).to.be.equal(false); }); - it('should add client of type MHSClient', function () { - var data: any = { 'client': 'mhs', 'client_type':'site', 'user_id': 125, 'user_type': 'user', 'channel': name } + it('should add client of type ServicesClient', function () { + var data: any = { 'client': 'services', 'client_type':'StudentProgressMonitor', 'user_id': 125, 'user_type': 'user', 'channel': name } var result = clientManager.getClientType(data, channelManager, wsClient); - expect(result.clientType()).to.be.equal('mhs'); + expect(result.clientType()).to.be.equal('services'); }); });