Add all BENNC message types with unit tests
This commit is contained in:
41
src/messages/basic.ts
Normal file
41
src/messages/basic.ts
Normal 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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user