diff --git a/src/aimedb/handler.ts b/src/aimedb/handler.ts new file mode 100644 index 0000000..c847833 --- /dev/null +++ b/src/aimedb/handler.ts @@ -0,0 +1,56 @@ +import { AimeRequest } from "./request"; +import { AimeResponse } from "./response"; + +export function dispatch(req: AimeRequest): AimeResponse | undefined { + switch (req.type) { + case "hello": + console.log("Aimedb: Hello"); + + return { type: req.type, status: 1 }; + + case "campaign": + console.log("Aimedb: Campaign stuff"); + + return { type: req.type, status: 1 }; + + case "lookup": + console.log("Aimedb: Mifare lookup v1", req.luid); + + return { + type: req.type, + status: 1, + aimeId: 0x55667788, + registerLevel: "none", + }; + + case "lookup2": + console.log("Aimedb: Mifare lookup v2", req.luid); + + return { + type: req.type, + status: 1, + aimeId: 0x55667788, + registerLevel: "none", + }; + + case "register": + // We get sent here if lookup does not return an aimeId + + console.log("Aimedb: Mifare register", req.luid); + + return { type: req.type, status: 1, aimeId: 0x55667788 }; + + case "log": + console.log("Aimedb: Log message"); + + return { type: req.type, status: 1 }; + + case "goodbye": + console.log("Aimedb: Goodbye"); + + return undefined; + + default: + throw new Error("Aimedb: Handler not implemented!"); + } +} diff --git a/src/aimedb/index.ts b/src/aimedb/index.ts index c22e689..a83cef9 100644 --- a/src/aimedb/index.ts +++ b/src/aimedb/index.ts @@ -1,3 +1,4 @@ +import { dispatch } from "./handler"; import { AimeRequest } from "./request"; import { setup } from "./pipeline"; @@ -8,57 +9,13 @@ export default async function aimedb(socket) { try { for await (const obj of input) { + console.log("Aimedb: Decode", obj); + const req = obj as AimeRequest; + const res = dispatch(req); - console.log("Aimedb: Decode", req); - - switch (req.type) { - case "hello": - console.log("Aimedb: Hello"); - output.write({ type: req.type, status: 1 }); - - break; - - case "campaign": - console.log("Aimedb: Campaign stuff"); - output.write({ type: req.type, status: 1 }); - - break; - - case "lookup": - case "lookup2": - console.log("Aimedb: Mifare lookup", req.luid); - output.write({ - type: req.type, - status: 1, - aimeId: 0x55667788, - }); - - break; - - case "register": - // We get sent here if lookup does not return an aimeId - - console.log("Aimedb: Mifare register", req.luid); - output.write({ type: req.type, status: 1, aimeId: 0x55667788 }); - - break; - - case "log": - console.log("Aimedb: Log message"); - output.write({ type: req.type, status: 1 }); - - break; - - case "goodbye": - console.log("Aimedb: Goodbye"); - - break; - - default: - console.log("Aimedb: Handler not implemented!"); - - break; + if (res !== undefined) { + output.write(res); } } } catch (e) {