fix(core): improve channel handling
This commit is contained in:
parent
d033780015
commit
7991baf2bf
2491
package-lock.json
generated
Normal file
2491
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -14,7 +14,9 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^9.6.0",
|
"@types/node": "^9.6.0",
|
||||||
"tapbundle": "^2.0.0"
|
"tapbundle": "^2.0.0",
|
||||||
|
"ts-node": "^6.0.3",
|
||||||
|
"typescript": "^2.8.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lik": "^2.0.5",
|
"lik": "^2.0.5",
|
||||||
|
@ -17,6 +17,9 @@ export interface IServerGetMessagesRequestBody {
|
|||||||
youngerThan: number;
|
youngerThan: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the interface for a standard request
|
||||||
|
*/
|
||||||
export interface IServerPutMessageRequestBody {
|
export interface IServerPutMessageRequestBody {
|
||||||
channel: string;
|
channel: string;
|
||||||
passphrase: string;
|
passphrase: string;
|
||||||
@ -24,6 +27,9 @@ export interface IServerPutMessageRequestBody {
|
|||||||
payload: any;
|
payload: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* main class that setsup a Universe
|
||||||
|
*/
|
||||||
export class Universe {
|
export class Universe {
|
||||||
// subinstances
|
// subinstances
|
||||||
public universeStore: UniverseStore;
|
public universeStore: UniverseStore;
|
||||||
@ -66,7 +72,7 @@ export class Universe {
|
|||||||
// adds messages
|
// adds messages
|
||||||
const addMessageHandler = new Handler('PUT', request => {
|
const addMessageHandler = new Handler('PUT', request => {
|
||||||
const requestBody: IServerPutMessageRequestBody = request.body;
|
const requestBody: IServerPutMessageRequestBody = request.body;
|
||||||
const message = new UniverseMessage(requestBody.message, requestBody.payload);
|
const message = new UniverseMessage(requestBody.message, requestBody.channel, requestBody.passphrase, requestBody.payload);
|
||||||
this.universeStore.addMessage(message);
|
this.universeStore.addMessage(message);
|
||||||
console.log(requestBody);
|
console.log(requestBody);
|
||||||
return true;
|
return true;
|
||||||
|
@ -9,18 +9,35 @@ export class UniverseChannel {
|
|||||||
/**
|
/**
|
||||||
* stores the channels that are available within the universe
|
* stores the channels that are available within the universe
|
||||||
*/
|
*/
|
||||||
public static channelStore = new Objectmap();
|
public static channelStore = new Objectmap<UniverseChannel>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* allows messages to be processed in a blacklist mode for further analysis
|
||||||
|
*/
|
||||||
|
public static blackListChannel = new UniverseChannel('blacklist', 'nada');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* creates new channels
|
* creates new channels
|
||||||
* @param channelArg the name of the topic
|
* @param channelArg the name of the topic
|
||||||
* @param passphraseArg the secret thats used for a certain topic.
|
* @param passphraseArg the secret thats used for a certain topic.
|
||||||
*/
|
*/
|
||||||
public static createChannel = (channelNameArg: string, passphraseArg: string) => {
|
public static createChannel (channelNameArg: string, passphraseArg: string) {
|
||||||
const newChannel = new UniverseChannel(channelNameArg, passphraseArg);
|
const newChannel = new UniverseChannel(channelNameArg, passphraseArg);
|
||||||
return newChannel;
|
return newChannel;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public static authorizeForChannel (channelNameArg: string, passphraseArg: string) {
|
||||||
|
const foundChannel = this.channelStore.find(universeChannel => {
|
||||||
|
const result = universeChannel.authenticate(channelNameArg, passphraseArg);
|
||||||
|
return result;
|
||||||
|
});
|
||||||
|
if(foundChannel) {
|
||||||
|
return foundChannel;
|
||||||
|
} else {
|
||||||
|
return this.blackListChannel;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the name of the channel
|
* the name of the channel
|
||||||
*/
|
*/
|
||||||
@ -40,7 +57,7 @@ export class UniverseChannel {
|
|||||||
/**
|
/**
|
||||||
* authenticates a client on the server side
|
* authenticates a client on the server side
|
||||||
*/
|
*/
|
||||||
public async authenticateClient(passphraseArg: string): boolean {
|
public authenticate(channelNameArg: string, passphraseArg: string): boolean {
|
||||||
return passphraseArg === this.passphrase;
|
return (this.name === channelNameArg && this.passphrase === passphraseArg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
import * as plugins from './smartuniverse.plugins';
|
import * as plugins from './smartuniverse.plugins';
|
||||||
|
|
||||||
import { Timer, TimeStamp } from 'smarttime';
|
import { Timer, TimeStamp } from 'smarttime';
|
||||||
|
import { UniverseChannel } from './smartuniverse.classes.universechannel';
|
||||||
import { UniverseStore } from './smartuniverse.classes.universestore';
|
import { UniverseStore } from './smartuniverse.classes.universestore';
|
||||||
|
import { Universe } from './smartuniverse.classes.universe';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* represents a message within a universe
|
* represents a message within a universe
|
||||||
@ -22,7 +24,7 @@ export class UniverseMessage {
|
|||||||
/**
|
/**
|
||||||
* enables unprotected grouping of messages for efficiency purposes.
|
* enables unprotected grouping of messages for efficiency purposes.
|
||||||
*/
|
*/
|
||||||
public universeChannel: string;
|
public universeChannel: UniverseChannel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* time of creation
|
* time of creation
|
||||||
@ -45,9 +47,10 @@ export class UniverseMessage {
|
|||||||
* @param messageArg
|
* @param messageArg
|
||||||
* @param attachedPayloadArg
|
* @param attachedPayloadArg
|
||||||
*/
|
*/
|
||||||
constructor(messageArg: string, attachedPayloadArg: any) {
|
constructor(messageArg: string, channelNameArg: string, passphraseArg: string, attachedPayloadArg: any) {
|
||||||
this.timestamp = new TimeStamp();
|
this.timestamp = new TimeStamp();
|
||||||
this.message = messageArg;
|
this.message = messageArg;
|
||||||
|
this.universeChannel = UniverseChannel.authorizeForChannel(channelNameArg, passphraseArg);
|
||||||
this.attachedPayload = attachedPayloadArg;
|
this.attachedPayload = attachedPayloadArg;
|
||||||
this.fallBackDestruction();
|
this.fallBackDestruction();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user