Merge pull request #9 from yardstick/refactor-and-remove-mhs

refactorrr
This commit is contained in:
brmnjsh 2019-12-18 15:33:13 -05:00 committed by GitHub
commit 10fd862f79
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 55 additions and 56 deletions

View File

@ -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)
}

View File

@ -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'};

View File

@ -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;

View File

@ -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);

View File

@ -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) => {

View File

@ -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;

View File

@ -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;

View File

@ -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
}

View File

@ -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');

View File

@ -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');
});
});