From 5c095c23ad66af14d2206c0ccca597426212aee5 Mon Sep 17 00:00:00 2001 From: Josh Burman Date: Thu, 19 Dec 2019 23:20:39 -0500 Subject: [PATCH] generlize everything --- rc | 2 +- src/channelManager.ts | 20 +++++++++---------- src/channels/channelBase.ts | 6 +++--- .../types/customChannel.ts} | 0 .../privateChannel.ts} | 12 +++++------ .../types/publicChannel.ts} | 0 src/clientManager.ts | 10 +++++----- src/clients/clientBase.ts | 6 +++--- src/clients/servicesClient.ts | 17 ---------------- src/clients/types/customClient.ts | 0 src/clients/types/privateClient.ts | 17 ++++++++++++++++ src/clients/types/publicClient.ts | 0 src/messageManager.ts | 2 +- src/server.ts | 6 +++--- src/test/channelManager.spec.ts | 8 ++++---- src/test/clientManager.spec.ts | 6 +++--- 16 files changed, 56 insertions(+), 56 deletions(-) rename src/{test/mhsChannel.spec.ts => channels/types/customChannel.ts} (100%) rename src/channels/{services/studentProgressMonitorChannel.ts => types/privateChannel.ts} (55%) rename src/{test/mhsClient.spec.ts => channels/types/publicChannel.ts} (100%) delete mode 100644 src/clients/servicesClient.ts create mode 100644 src/clients/types/customClient.ts create mode 100644 src/clients/types/privateClient.ts create mode 100644 src/clients/types/publicClient.ts diff --git a/rc b/rc index 6917759..f4b4dd2 100755 --- a/rc +++ b/rc @@ -6,4 +6,4 @@ if [ -f .user_rc ]; then . .user_rc fi -. .vagrantrc +source .vagrantrc diff --git a/src/channelManager.ts b/src/channelManager.ts index 55c4ca2..d1d6a08 100644 --- a/src/channelManager.ts +++ b/src/channelManager.ts @@ -1,7 +1,7 @@ import ChannelBase from './channels/channelBase'; import ClientBase from './clients/clientBase'; -import ServicesClient from './clients/servicesClient'; -import StudentProgressMonitorChannel from './channels/services/studentProgressMonitorChannel'; +import PrivateClient from './clients/types/privateClient'; +import PrivateChannel from './channels/types/privateChannel'; var logger = require('./logger'); @@ -15,8 +15,8 @@ class ChannelManager { } createChannel(data: any) { - var channelExists: ChannelBase|StudentProgressMonitorChannel|null = this.channelExists(data.channel); - var channel: ChannelBase|StudentProgressMonitorChannel; + var channelExists: ChannelBase|PrivateChannel|null = this.channelExists(data.channel); + var channel: ChannelBase|PrivateChannel; if (channelExists) { channel = channelExists; @@ -40,8 +40,8 @@ class ChannelManager { return null; } - addClientToChannel(client: ClientBase|ServicesClient, channel_id: string) { - var channel: ChannelBase|StudentProgressMonitorChannel|null = this.channelExists(channel_id); + addClientToChannel(client: ClientBase|PrivateClient, channel_id: string) { + var channel: ChannelBase|PrivateChannel|null = this.channelExists(channel_id); if (channel) { channel.addClient(client); @@ -54,11 +54,11 @@ class ChannelManager { } createByChannelType(data: any) { - var channel_name = data.client.charAt(0).toLowerCase() + data.client.slice(1) + 'Channel' + var channel_name = data.channel_type + 'Channel' try { - var Channel = require(`./channels/${data.client_type}/${channel_name}`); - logger.accessLog.info(`attempting to create channel of type ${data.client}, channel id: ${data.channel}...`); + var Channel = require(`./channels/types/${channel_name}`); + logger.accessLog.info(`attempting to create channel of type ${channel_name}, channel id: ${data.channel}...`); return new Channel(data.channel); } catch (e) { logger.errorLog.info(e); @@ -83,7 +83,7 @@ class ChannelManager { return false; } - changeChannel(client: ClientBase|ServicesClient, changeRequest: any) { + changeChannel(client: ClientBase|PrivateClient, 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 9e76470..68a2a7d 100644 --- a/src/channels/channelBase.ts +++ b/src/channels/channelBase.ts @@ -1,18 +1,18 @@ import ClientBase from '../clients/clientBase'; -import ServicesClient from '../clients/servicesClient'; +import PrivateClient from '../clients/types/privateClient'; var logger = require('../logger'); class ChannelBase { id: string; - clients: ServicesClient[]|ClientBase[] = []; + clients: PrivateClient[]|ClientBase[] = []; constructor(id: string) { this.id = id; logger.accessLog.info('Channel Created', {channelId: id}); } - addClient(client: ServicesClient|ClientBase) { + addClient(client: PrivateClient|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/test/mhsChannel.spec.ts b/src/channels/types/customChannel.ts similarity index 100% rename from src/test/mhsChannel.spec.ts rename to src/channels/types/customChannel.ts diff --git a/src/channels/services/studentProgressMonitorChannel.ts b/src/channels/types/privateChannel.ts similarity index 55% rename from src/channels/services/studentProgressMonitorChannel.ts rename to src/channels/types/privateChannel.ts index d0744f4..20ba6d7 100644 --- a/src/channels/services/studentProgressMonitorChannel.ts +++ b/src/channels/types/privateChannel.ts @@ -1,17 +1,17 @@ -import ServicesClient from '../../clients/servicesClient'; +import PrivateClient from '../../clients/types/privateClient'; import ChannelBase from '../channelBase'; var logger = require('../../logger'); -class StudentProgressMonitorChannel extends ChannelBase { - broadcastMessage(from: ServicesClient, message: any) { +class PrivateChannel extends ChannelBase { + broadcastMessage(from: PrivateClient, 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)) client.ws.send(JSON.stringify(message)); logger.accessLog.info(`sent to ${client.id}`, { data: { message: message }}); } else { - logger.accessLog.info(`client either a ${client.data.user_type} or is the sender: ${client.id}`, { data: { message: message }}); + logger.accessLog.info(`client is either just a broadcaster or is the sender: ${client.id}`, { data: { message: message }}); } } @@ -19,5 +19,5 @@ class StudentProgressMonitorChannel extends ChannelBase { } }; -module.exports = StudentProgressMonitorChannel; -export default StudentProgressMonitorChannel; +module.exports = PrivateChannel; +export default PrivateChannel; diff --git a/src/test/mhsClient.spec.ts b/src/channels/types/publicChannel.ts similarity index 100% rename from src/test/mhsClient.spec.ts rename to src/channels/types/publicChannel.ts diff --git a/src/clientManager.ts b/src/clientManager.ts index cba1fed..7910d66 100644 --- a/src/clientManager.ts +++ b/src/clientManager.ts @@ -1,12 +1,12 @@ import * as WebSocket from 'ws'; import ClientBase from './clients/clientBase'; -import ServicesClient from './clients/servicesClient'; +import PrivateClient from './clients/types/privateClient'; import ChannelManager from './channelManager'; var logger = require('./logger'); class ClientManager { - clients: ClientBase[]|ServicesClient[] = []; + clients: ClientBase[]|PrivateClient[] = []; constructor() { //...maybe one day @@ -26,7 +26,7 @@ class ClientManager { } clientsOfType(client_type: string) { - var result: ClientBase[]|ServicesClient[] = []; + var result: ClientBase[]|PrivateClient[] = []; for (let client of this.clients) { if (client.type() == client_type) { @@ -68,9 +68,9 @@ class ClientManager { getClientType(data: any, channelManager: ChannelManager, ws: WebSocket) { var client_type = data.client_type + 'Client' - + try { - var Client = require(`./clients/${client_type}`); + var Client = require(`./clients/types/${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) { diff --git a/src/clients/clientBase.ts b/src/clients/clientBase.ts index 1705090..0ea6c8f 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 StudentProgressMonitorChannel from '../channels/services/studentProgressMonitorChannel'; +import Private from '../channels/types/privateChannel'; var messageManager = require('../messageManager'); var logger = require('../logger'); @@ -11,7 +11,7 @@ class ClientBase { ws: WebSocket; data: any; id: number; - channel: ChannelBase|StudentProgressMonitorChannel|null; + channel: ChannelBase|Private|null; clientManager: ClientManager; channelManager: ChannelManager; @@ -36,7 +36,7 @@ class ClientBase { return this.data.client; } - connectToChannel(channel: StudentProgressMonitorChannel) { + connectToChannel(channel: Private) { this.channel = channel; var messageListener = (message: any) => { diff --git a/src/clients/servicesClient.ts b/src/clients/servicesClient.ts deleted file mode 100644 index 5451df2..0000000 --- a/src/clients/servicesClient.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 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/types/customClient.ts b/src/clients/types/customClient.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/clients/types/privateClient.ts b/src/clients/types/privateClient.ts new file mode 100644 index 0000000..a57b3f3 --- /dev/null +++ b/src/clients/types/privateClient.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 PrivateClient extends ClientBase { + constructor(data: any, ws: WebSocket, channelManager: ChannelManager, clientManager: ClientManager) { + super(data, ws, channelManager, clientManager); + logger.accessLog.info('Private Client Created', {data: data}); + } +}; + +module.exports = PrivateClient; +export default PrivateClient; + diff --git a/src/clients/types/publicClient.ts b/src/clients/types/publicClient.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/messageManager.ts b/src/messageManager.ts index f70c0b5..ee6cc20 100644 --- a/src/messageManager.ts +++ b/src/messageManager.ts @@ -12,7 +12,7 @@ let schema = { time_left: Joi.any(), status: Joi.string(), channel: Joi.string(), - client: Joi.string(), + channel_type: Joi.string(), client_type: Joi.string(), user_id: Joi.number().integer(), user_exam_id: Joi.number().integer(), diff --git a/src/server.ts b/src/server.ts index 0221806..5037181 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 ServicesClient from './clients/servicesClient'; +import PrivateClient from './clients/types/privateClient'; // if (app.environment == 'development') { @@ -55,13 +55,13 @@ function connectionManager() { } if (clientManager.clientExists(data.user_id)) { - var client: ClientBase|ServicesClient|null = clientManager.getClient(data.user_id); + var client: ClientBase|PrivateClient|null = clientManager.getClient(data.user_id); if (client != null) { client.replaceWebSocket(ws); } } else { - var client: ClientBase|ServicesClient|null = clientManager.addClient(data, channelManager, ws); + var client: ClientBase|PrivateClient|null = clientManager.addClient(data, channelManager, ws); } if (client != null) { diff --git a/src/test/channelManager.spec.ts b/src/test/channelManager.spec.ts index 5c45820..690442b 100644 --- a/src/test/channelManager.spec.ts +++ b/src/test/channelManager.spec.ts @@ -7,7 +7,7 @@ var expect = require('chai').expect; var sinon = require('sinon'); var name: string = 'test channel'; -var data: any = { 'client': 'test', 'client_type':'site', 'user_id': 125, 'user_type': 'user', 'channel': name } +var data: any = { 'channel_type': 'private', 'client_type':'private', 'user_id': 125, 'user_roles': '["broadcaster"]', 'channel': name } var WebSocketClient = require('websocket').client; var wsClient = new WebSocketClient(); var clientManager = new ClientManager(); @@ -33,7 +33,7 @@ describe('ChannelManager', function () { expect(result).to.be.equal(true); }); - it('should not return a channel when seraching if channel exists', function () { + it('should not return a channel when searching if channel exists', function () { var exists = channelManager.channelExists('no channel'); var result = exists ? true : false; expect(result).to.be.equal(false); @@ -49,8 +49,8 @@ describe('ChannelManager', function () { expect(result.status).to.be.equal('notice'); }); - it('should create a channel of type StudentProgressMonitorChannel', function () { - var data2 = { 'channel': 'test channel 2', 'client': 'mhs', 'client_type':'site' }; + it('should create a channel of type PrivateChannel', function () { + var data2 = { 'channel': 'test channel 2', 'client_type': 'private', 'channel_type':'private' }; 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 962602c..6afd07d 100644 --- a/src/test/clientManager.spec.ts +++ b/src/test/clientManager.spec.ts @@ -51,9 +51,9 @@ describe('ClientManager', function () { expect(result).to.be.equal(false); }); - it('should add client of type ServicesClient', function () { - var data: any = { 'client': 'services', 'client_type':'StudentProgressMonitor', 'user_id': 125, 'user_type': 'user', 'channel': name } + it('should add client of type PrivateClient', function () { + var data: any = { 'channel_type': 'private', 'client_type':'private', 'user_id': 125, 'user_roles': '["broadcaster", "receiver"]', 'channel': name } var result = clientManager.getClientType(data, channelManager, wsClient); - expect(result.clientType()).to.be.equal('services'); + expect(result.clientType()).to.be.equal('private'); }); });