"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const channelBase_1 = require("./channels/channelBase"); var logger = require('./logger'); class ChannelManager { constructor() { this.channels = []; // create default channel... var channel = new channelBase_1.default('default'); this.channels.push(channel); } createChannel(data) { var channelExists = this.channelExists(data.channel); var channel; if (channelExists) { channel = channelExists; logger.accessLog.info(`Channel already exists: ${channel.id}`); } else { channel = this.createByChannelType(data); this.channels.push(channel); logger.accessLog.info(`Added channel to channel manager: ${channel.id}`); } return channel; } channelExists(channel_id) { for (let channel of this.channels) { if (channel.id == channel_id) { return channel; } } return null; } addClientToChannel(client, channel_id) { var channel = this.channelExists(channel_id); if (channel) { channel.addClient(client); client.connectToChannel(channel); return { 'status': 'success' }; } else { logger.accessLog.info(`channel with id ${channel_id} does not exist.`); return { 'status': 'notice', 'message': `channel with id ${channel_id} does not exist.` }; } } createByChannelType(data) { try { var Channel = require(`./channels/${data.client_type}s/${data.client}channel`); logger.accessLog.info(`attempting to create channel of type ${data.client}, channel id: ${data.channel}...`); return new Channel(data.channel); } catch (e) { logger.errorLog.info(e); logger.accessLog.info(`creating base channel: ${data.channel}`); return new channelBase_1.default(data.channel); } } } ; exports.default = ChannelManager; // { :client => 'mhs', :client_type => 'site', :user_id => 125, :user_type => 'user', :channel => 'mhs_1239' } //# sourceMappingURL=channelManager.js.map