Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
9c1504ef02 | |||
e8f2e04d1c | |||
e12aa7e961 | |||
857b7cd010 | |||
e100dea160 | |||
e8e87fcdba | |||
0d18b11721 | |||
eaaefddbe3 | |||
8c6946ddb6 | |||
3a7ebcdd80 |
2
package-lock.json
generated
2
package-lock.json
generated
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@pushrocks/smartuniverse",
|
"name": "@pushrocks/smartuniverse",
|
||||||
"version": "1.0.59",
|
"version": "1.0.64",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@pushrocks/smartuniverse",
|
"name": "@pushrocks/smartuniverse",
|
||||||
"version": "1.0.59",
|
"version": "1.0.64",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "messaging service for your micro services",
|
"description": "messaging service for your micro services",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
@ -30,6 +30,7 @@
|
|||||||
"@pushrocks/smartexpress": "^3.0.38",
|
"@pushrocks/smartexpress": "^3.0.38",
|
||||||
"@pushrocks/smartfile": "^7.0.4",
|
"@pushrocks/smartfile": "^7.0.4",
|
||||||
"@pushrocks/smarthash": "^2.0.6",
|
"@pushrocks/smarthash": "^2.0.6",
|
||||||
|
"@pushrocks/smartlog": "^2.0.19",
|
||||||
"@pushrocks/smartpromise": "^3.0.2",
|
"@pushrocks/smartpromise": "^3.0.2",
|
||||||
"@pushrocks/smartrequest": "^1.1.16",
|
"@pushrocks/smartrequest": "^1.1.16",
|
||||||
"@pushrocks/smartrx": "^2.0.3",
|
"@pushrocks/smartrx": "^2.0.3",
|
||||||
|
@ -37,11 +37,11 @@ tap.test('create smartuniverse client', async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
tap.test('should add a channel to the universe', async () => {
|
tap.test('should add a channel to the universe', async () => {
|
||||||
await testUniverse.addChannel(testChannelData.channelName, testChannelData.channelPass);
|
testUniverse.addChannel(testChannelData.channelName, testChannelData.channelPass);
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('should add the same channel to the client universe in the same way', async () => {
|
tap.test('should add the same channel to the client universe in the same way', async () => {
|
||||||
await testClientUniverse.addChannel(testChannelData.channelName, testChannelData.channelPass);
|
testClientUniverse.addChannel(testChannelData.channelName, testChannelData.channelPass);
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('should start the ClientUniverse', async () => {
|
tap.test('should start the ClientUniverse', async () => {
|
||||||
@ -49,12 +49,12 @@ tap.test('should start the ClientUniverse', async () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
tap.test('should get a observable correctly', async () => {
|
tap.test('should get a observable correctly', async () => {
|
||||||
testClientChannel = await testClientUniverse.getChannel(testChannelData.channelName);
|
testClientChannel = testClientUniverse.getChannel(testChannelData.channelName);
|
||||||
expect(testClientChannel).to.be.instanceof(smartuniverse.ClientUniverseChannel);
|
expect(testClientChannel).to.be.instanceof(smartuniverse.ClientUniverseChannel);
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('should send a message correctly', async () => {
|
tap.test('should send a message correctly', async () => {
|
||||||
await (await testClientUniverse.getChannel(testChannelData.channelName)).sendMessage({
|
await (testClientUniverse.getChannel(testChannelData.channelName)).sendMessage({
|
||||||
messageText: 'hello'
|
messageText: 'hello'
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
// Client classes
|
// Client classes
|
||||||
export * from './smartuniverse.classes.clientuniverse';
|
export * from './smartuniverse.classes.clientuniverse';
|
||||||
export * from './smartuniverse.classes.clientuniversechannel';
|
export * from './smartuniverse.classes.clientuniversechannel';
|
||||||
|
export * from './smartuniverse.classes.clientuniversemessage';
|
||||||
|
|
||||||
// Server classes
|
// Server classes
|
||||||
export * from './smartuniverse.classes.universe';
|
export * from './smartuniverse.classes.universe';
|
||||||
|
@ -7,7 +7,7 @@ import * as url from 'url';
|
|||||||
|
|
||||||
import * as interfaces from './interfaces';
|
import * as interfaces from './interfaces';
|
||||||
|
|
||||||
import { ClientUniverseChannel, UniverseMessage } from './';
|
import { ClientUniverseChannel, ClientUniverseMessage } from './';
|
||||||
import { ClientUniverseCache } from './smartuniverse.classes.clientuniversecache';
|
import { ClientUniverseCache } from './smartuniverse.classes.clientuniversecache';
|
||||||
|
|
||||||
export interface IClientOptions {
|
export interface IClientOptions {
|
||||||
@ -21,7 +21,7 @@ export interface IClientOptions {
|
|||||||
export class ClientUniverse {
|
export class ClientUniverse {
|
||||||
public options;
|
public options;
|
||||||
public smartsocketClient: plugins.smartsocket.SmartsocketClient;
|
public smartsocketClient: plugins.smartsocket.SmartsocketClient;
|
||||||
public observableIntake: plugins.smartrx.ObservableIntake<UniverseMessage>;
|
public observableIntake: plugins.smartrx.ObservableIntake<ClientUniverseMessage>;
|
||||||
public clientUniverseCache = new ClientUniverseCache();
|
public clientUniverseCache = new ClientUniverseCache();
|
||||||
|
|
||||||
constructor(optionsArg: IClientOptions) {
|
constructor(optionsArg: IClientOptions) {
|
||||||
@ -32,15 +32,16 @@ export class ClientUniverse {
|
|||||||
* adds a channel to the channelcache
|
* adds a channel to the channelcache
|
||||||
* TODO: verify channel before adding it to the channel cache
|
* TODO: verify channel before adding it to the channel cache
|
||||||
*/
|
*/
|
||||||
public async addChannel(channelNameArg: string, passphraseArg: string) {
|
public addChannel(channelNameArg: string, passphraseArg: string) {
|
||||||
const existingChannel = await this.getChannel(channelNameArg);
|
const existingChannel = this.getChannel(channelNameArg);
|
||||||
|
|
||||||
if (existingChannel) {
|
if (existingChannel) {
|
||||||
throw new Error('channel exists');
|
throw new Error('channel exists');
|
||||||
}
|
}
|
||||||
|
|
||||||
// lets create the channel
|
// lets create the channel
|
||||||
await ClientUniverseChannel.createClientUniverseChannel(this, channelNameArg, passphraseArg);
|
const clientUniverseChannel = ClientUniverseChannel.createClientUniverseChannel(this, channelNameArg, passphraseArg);
|
||||||
|
return clientUniverseChannel;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -48,7 +49,7 @@ export class ClientUniverse {
|
|||||||
* @param channelName
|
* @param channelName
|
||||||
* @param passphraseArg
|
* @param passphraseArg
|
||||||
*/
|
*/
|
||||||
public async getChannel(channelName: string): Promise<ClientUniverseChannel> {
|
public getChannel(channelName: string): ClientUniverseChannel {
|
||||||
const clientUniverseChannel = this.clientUniverseCache.channelMap.find(channel => {
|
const clientUniverseChannel = this.clientUniverseCache.channelMap.find(channel => {
|
||||||
return channel.name === channelName;
|
return channel.name === channelName;
|
||||||
});
|
});
|
||||||
@ -87,7 +88,6 @@ export class ClientUniverse {
|
|||||||
role: 'UniverseClient',
|
role: 'UniverseClient',
|
||||||
url: parsedURL.protocol + '//' + parsedURL.hostname
|
url: parsedURL.protocol + '//' + parsedURL.hostname
|
||||||
};
|
};
|
||||||
console.log(socketConfig);
|
|
||||||
this.smartsocketClient = new SmartsocketClient(socketConfig);
|
this.smartsocketClient = new SmartsocketClient(socketConfig);
|
||||||
this.observableIntake = new plugins.smartrx.ObservableIntake();
|
this.observableIntake = new plugins.smartrx.ObservableIntake();
|
||||||
|
|
||||||
@ -110,8 +110,9 @@ export class ClientUniverse {
|
|||||||
const socketFunctionProcessMessage = new plugins.smartsocket.SocketFunction({
|
const socketFunctionProcessMessage = new plugins.smartsocket.SocketFunction({
|
||||||
funcName: 'processMessage',
|
funcName: 'processMessage',
|
||||||
allowedRoles: [],
|
allowedRoles: [],
|
||||||
funcDef: async (data: interfaces.IServerUnsubscribeActionPayload) => {
|
funcDef: async (messageDescriptorArg: interfaces.IUniverseMessage) => {
|
||||||
console.log('Got message from server');
|
plugins.smartlog.defaultLogger.log('info', 'Got message from server');
|
||||||
|
this.observableIntake.push(ClientUniverseMessage.createMessageFromMessageDescriptor(messageDescriptorArg));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -120,7 +121,7 @@ export class ClientUniverse {
|
|||||||
this.smartsocketClient.addSocketFunction(socketFunctionProcessMessage);
|
this.smartsocketClient.addSocketFunction(socketFunctionProcessMessage);
|
||||||
|
|
||||||
await this.smartsocketClient.connect();
|
await this.smartsocketClient.connect();
|
||||||
console.log('universe client connected successfully');
|
plugins.smartlog.defaultLogger.log('info', 'universe client connected successfully');
|
||||||
await this.clientUniverseCache.channelMap.forEach(async clientUniverseChannelArg => {
|
await this.clientUniverseCache.channelMap.forEach(async clientUniverseChannelArg => {
|
||||||
await clientUniverseChannelArg.subscribe();
|
await clientUniverseChannelArg.subscribe();
|
||||||
});
|
});
|
||||||
|
@ -13,11 +13,11 @@ export class ClientUniverseChannel implements interfaces.IUniverseChannel {
|
|||||||
* @param channelNameArg
|
* @param channelNameArg
|
||||||
* @param passphraseArg
|
* @param passphraseArg
|
||||||
*/
|
*/
|
||||||
public static async createClientUniverseChannel(
|
public static createClientUniverseChannel(
|
||||||
clientUniverseArg: ClientUniverse,
|
clientUniverseArg: ClientUniverse,
|
||||||
channelNameArg: string,
|
channelNameArg: string,
|
||||||
passphraseArg: string
|
passphraseArg: string
|
||||||
): Promise<ClientUniverseChannel> {
|
): ClientUniverseChannel {
|
||||||
const clientChannel = new ClientUniverseChannel(
|
const clientChannel = new ClientUniverseChannel(
|
||||||
clientUniverseArg,
|
clientUniverseArg,
|
||||||
channelNameArg,
|
channelNameArg,
|
||||||
|
@ -6,7 +6,10 @@ export class ClientUniverseMessage implements interfaces.IUniverseMessage {
|
|||||||
// ======
|
// ======
|
||||||
// STATIC
|
// STATIC
|
||||||
// ======
|
// ======
|
||||||
public static createMessageFromPayload(messageDescriptor: interfaces.IUniverseMessage) {}
|
public static createMessageFromMessageDescriptor(messageDescriptor: interfaces.IUniverseMessage) {
|
||||||
|
const clientuniverseMessage = new ClientUniverseMessage(messageDescriptor);
|
||||||
|
return clientuniverseMessage;
|
||||||
|
}
|
||||||
|
|
||||||
// ========
|
// ========
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
@ -23,11 +26,14 @@ export class ClientUniverseMessage implements interfaces.IUniverseMessage {
|
|||||||
public payloadStringType;
|
public payloadStringType;
|
||||||
public targetChannelName: string;
|
public targetChannelName: string;
|
||||||
|
|
||||||
constructor(messageArg: interfaces.IUniverseMessage, payloadArg) {
|
constructor(messageArg: interfaces.IUniverseMessage) {
|
||||||
for (const key of Object.keys(messageArg)) {
|
for (const key of Object.keys(messageArg)) {
|
||||||
this[key] = messageArg[key];
|
this[key] = messageArg[key];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gets json for payload
|
||||||
|
*/
|
||||||
getAsJsonForPayload() {}
|
getAsJsonForPayload() {}
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ export class Universe {
|
|||||||
/**
|
/**
|
||||||
* adds a channel to the Universe
|
* adds a channel to the Universe
|
||||||
*/
|
*/
|
||||||
public async addChannel(nameArg: string, passphraseArg: string) {
|
public addChannel(nameArg: string, passphraseArg: string) {
|
||||||
const newChannel = UniverseChannel.createChannel(this, nameArg, passphraseArg);
|
const newChannel = UniverseChannel.createChannel(this, nameArg, passphraseArg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,8 +121,9 @@ export class Universe {
|
|||||||
socketConnectionArg
|
socketConnectionArg
|
||||||
);
|
);
|
||||||
if (universeConnection) {
|
if (universeConnection) {
|
||||||
console.log('found UniverseConnection for socket');
|
plugins.smartlog.defaultLogger.log('ok', 'found UniverseConnection for socket for incoming message');
|
||||||
} else {
|
} else {
|
||||||
|
plugins.smartlog.defaultLogger.log('warn', 'found no Authorized channel for incoming message');
|
||||||
return {
|
return {
|
||||||
error: 'You need to authenticate for a channel'
|
error: 'You need to authenticate for a channel'
|
||||||
};
|
};
|
||||||
@ -149,7 +150,7 @@ export class Universe {
|
|||||||
// start everything
|
// start everything
|
||||||
await this.smartexpressServer.start();
|
await this.smartexpressServer.start();
|
||||||
await this.smartsocket.start();
|
await this.smartsocket.start();
|
||||||
console.log('started universe');
|
plugins.smartlog.defaultLogger.log('success', 'started universe');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -61,12 +61,12 @@ export class UniverseChannel {
|
|||||||
if (foundChannel) {
|
if (foundChannel) {
|
||||||
universeMessageArg.authenticated = true;
|
universeMessageArg.authenticated = true;
|
||||||
universeMessageArg.universeChannelList.add(foundChannel);
|
universeMessageArg.universeChannelList.add(foundChannel);
|
||||||
console.log('message authorized');
|
plugins.smartlog.defaultLogger.log('ok', 'message authorized');
|
||||||
return foundChannel;
|
return foundChannel;
|
||||||
} else {
|
} else {
|
||||||
universeMessageArg.authenticated = false;
|
universeMessageArg.authenticated = false;
|
||||||
universeMessageArg.universeChannelList.add(universeCacheArg.blackListChannel);
|
universeMessageArg.universeChannelList.add(universeCacheArg.blackListChannel);
|
||||||
console.log('message not valid');
|
plugins.smartlog.defaultLogger.log('warn', 'message not valid');
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,6 @@ export class UniverseConnection {
|
|||||||
universeConnectionArg: UniverseConnection
|
universeConnectionArg: UniverseConnection
|
||||||
): Promise<UniverseConnection> {
|
): Promise<UniverseConnection> {
|
||||||
for (const authenticationRequest of universeConnectionArg.authenticationRequests) {
|
for (const authenticationRequest of universeConnectionArg.authenticationRequests) {
|
||||||
// TODO: authenticate channel subscriptions
|
|
||||||
const universeChannelToAuthenticateAgainst = UniverseChannel.getUniverseChannelByName(universeRef, authenticationRequest.name);
|
const universeChannelToAuthenticateAgainst = UniverseChannel.getUniverseChannelByName(universeRef, authenticationRequest.name);
|
||||||
if (universeChannelToAuthenticateAgainst.passphrase === authenticationRequest.passphrase) {
|
if (universeChannelToAuthenticateAgainst.passphrase === authenticationRequest.passphrase) {
|
||||||
universeConnectionArg.authenticatedChannels.push(universeChannelToAuthenticateAgainst);
|
universeConnectionArg.authenticatedChannels.push(universeChannelToAuthenticateAgainst);
|
||||||
@ -74,7 +73,6 @@ export class UniverseConnection {
|
|||||||
connectionArg1: UniverseConnection,
|
connectionArg1: UniverseConnection,
|
||||||
connectionArg2: UniverseConnection
|
connectionArg2: UniverseConnection
|
||||||
) {
|
) {
|
||||||
// TODO: merge connections
|
|
||||||
return connectionArg1;
|
return connectionArg1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ export class UniverseMessage implements interfaces.IUniverseMessage {
|
|||||||
* handles bad messages for further analysis
|
* handles bad messages for further analysis
|
||||||
*/
|
*/
|
||||||
public handleAsBadMessage() {
|
public handleAsBadMessage() {
|
||||||
console.log('received a bad message');
|
plugins.smartlog.defaultLogger.log('warn', 'received a bad message');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -9,6 +9,7 @@ import * as smarthash from '@pushrocks/smarthash';
|
|||||||
import * as smartdelay from '@pushrocks/smartdelay';
|
import * as smartdelay from '@pushrocks/smartdelay';
|
||||||
import * as smartexpress from '@pushrocks/smartexpress';
|
import * as smartexpress from '@pushrocks/smartexpress';
|
||||||
import * as smartfile from '@pushrocks/smartfile';
|
import * as smartfile from '@pushrocks/smartfile';
|
||||||
|
import * as smartlog from '@pushrocks/smartlog';
|
||||||
import * as smartpromise from '@pushrocks/smartpromise';
|
import * as smartpromise from '@pushrocks/smartpromise';
|
||||||
import * as smartrequest from '@pushrocks/smartrequest';
|
import * as smartrequest from '@pushrocks/smartrequest';
|
||||||
import * as smartrx from '@pushrocks/smartrx';
|
import * as smartrx from '@pushrocks/smartrx';
|
||||||
@ -22,6 +23,7 @@ export {
|
|||||||
smartdelay,
|
smartdelay,
|
||||||
smartexpress,
|
smartexpress,
|
||||||
smartfile,
|
smartfile,
|
||||||
|
smartlog,
|
||||||
smartpromise,
|
smartpromise,
|
||||||
smartrx,
|
smartrx,
|
||||||
smartrequest,
|
smartrequest,
|
||||||
|
Reference in New Issue
Block a user