Add all BENNC message types with unit tests

This commit is contained in:
Jack Hadrill
2022-02-06 20:34:13 +00:00
parent 7d1a0991e4
commit e758de7ef4
28 changed files with 708 additions and 12539 deletions

41
src/messages/basic.ts Normal file
View File

@@ -0,0 +1,41 @@
import { decrypt, encrypt } from 'romulus-js'
import { DEFAULT_KEY, MessageTypes } from '../common'
import { numberToUint16BE } from '../utilities/number'
import { packOutgoingPacket } from './packet'
const MESSAGE_TYPE = numberToUint16BE(MessageTypes.Basic)
export interface BasicMessage {
message: string
success?: boolean
}
/**
* Create an outgoing basic message (0x0001) packet.
* @param properties The properties for the message.
* @param key The key to encrypt the data with.
* @returns An outgoing basic message (0x0001) packet.
*/
export function packBasicMessage (properties: BasicMessage, key: Buffer = DEFAULT_KEY): Buffer {
const message = Buffer.from(properties.message, 'utf-8')
const data = encrypt(message, MESSAGE_TYPE, key)
return packOutgoingPacket({
messageType: MESSAGE_TYPE,
data: data
})
}
/**
* Unpack the data section of an incoming basic message (0x0001) message.
* @param data The data section of an incoming basic message (0x0001) message.
* @param key The key to decrypt the data with.
* @returns An unpacked basic message (0x0001) message.
*/
export function unpackBasicMessage (data: Buffer, key: Buffer = DEFAULT_KEY): BasicMessage {
const message = decrypt(data, MESSAGE_TYPE, key)
return {
message: message.plaintext.toString(),
success: message.success
}
}