Use JSON over strings as payload format
This commit is contained in:
27
backend/src/Model/Base64Message.ts
Normal file
27
backend/src/Model/Base64Message.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { Base64 } from 'js-base64'
|
||||
|
||||
export class Base64Message {
|
||||
private base64Message: string
|
||||
public length: number
|
||||
|
||||
private constructor(base64Str: string) {
|
||||
this.base64Message = base64Str
|
||||
this.length = base64Str.length
|
||||
}
|
||||
|
||||
public static toUnicodeString(message: Base64Message) {
|
||||
return Base64.decode(message.base64Message)
|
||||
}
|
||||
|
||||
public static fromBuffer(buffer: Buffer) {
|
||||
return new Base64Message(buffer.toString('base64'))
|
||||
}
|
||||
|
||||
public static fromString(str: string) {
|
||||
return new Base64Message(Base64.encode(str))
|
||||
}
|
||||
|
||||
public static toDataUri(message: Base64Message, mimeType: string) {
|
||||
return `data:${mimeType};base64,${message.base64Message}`
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
import { Base64Message } from './Base64Message'
|
||||
|
||||
export interface Message {
|
||||
value?: any | undefined
|
||||
value?: Base64Message
|
||||
length: number
|
||||
received: Date
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ export class Tree<ViewModel> extends TreeNode<ViewModel> {
|
||||
public applyUnmergedChanges() {
|
||||
this.unmergedMessages.forEach((msg) => {
|
||||
const edges = msg.topic.split('/')
|
||||
const node = TreeNodeFactory.fromEdgesAndValue<ViewModel, any>(edges, msg.payload)
|
||||
const node = TreeNodeFactory.fromEdgesAndValue<ViewModel>(edges, msg.payload)
|
||||
node.mqttMessage = msg
|
||||
|
||||
if (!this.nodeFilter || this.nodeFilter(node)) {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { Base64Message } from './Base64Message'
|
||||
import { Edge, Tree, TreeNode } from './'
|
||||
|
||||
interface HasLength {
|
||||
@@ -18,10 +19,10 @@ export abstract class TreeNodeFactory {
|
||||
node.sourceEdge!.target = node
|
||||
}
|
||||
|
||||
public static fromEdgesAndValue<ViewModel, T extends HasLength>(edgeNames: string[], value?: T): TreeNode<ViewModel> {
|
||||
public static fromEdgesAndValue<ViewModel>(edgeNames: string[], value?: Base64Message | null): TreeNode<ViewModel> {
|
||||
const node = new TreeNode<ViewModel>()
|
||||
node.setMessage({
|
||||
value,
|
||||
value: value || undefined,
|
||||
length: value ? value.length : 0,
|
||||
received: new Date(),
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user