From 7d574e31622154541dfc47a179dd9b5c66e1bb2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Fri, 5 May 2023 10:00:31 +0200 Subject: [PATCH] Generify serialize --- src/Center/Center.ts | 19 ++++--------------- src/Client/Client.ts | 20 ++++---------------- src/SmppSession.ts | 19 ++++++++++++++++++- 3 files changed, 26 insertions(+), 32 deletions(-) diff --git a/src/Center/Center.ts b/src/Center/Center.ts index 250cab0..c91e0bc 100644 --- a/src/Center/Center.ts +++ b/src/Center/Center.ts @@ -148,20 +148,9 @@ export default class Center extends SmppSession { this.server.close(); } - serialize(): object { - return { - id: this._id, - port: this.port, - username: this._username, - password: this._password, - status: this._status, - defaultSingleJob: this._defaultSingleJob.serialize(), - defaultMultipleJob: this._defaultMultipleJob.serialize(), - preprocessors: this.processors.Preprocessor.map((p: PduProcessor) => p.serialize()), - postprocessors: this.processors.Postprocessor.map((p: PduProcessor) => p.serialize()), - availablePreprocessors: ProcessorManager.getPreprocessorsForType(this.constructor.name).map((p: PduProcessor) => p.serialize()), - availablePostprocessors: ProcessorManager.getPostprocessorsForType(this.constructor.name).map((p: PduProcessor) => p.serialize()), - }; + postSerialize(obj: any): object { + obj.port = this.port; + return obj; } updateStatus(): void { @@ -220,4 +209,4 @@ export default class Center extends SmppSession { this.pendingSessions = this.pendingSessions.filter((s: any) => s !== session); this.updateStatus(); } -} \ No newline at end of file +} diff --git a/src/Client/Client.ts b/src/Client/Client.ts index 12b0d53..bfaa695 100644 --- a/src/Client/Client.ts +++ b/src/Client/Client.ts @@ -116,21 +116,9 @@ export default class Client extends SmppSession { }); } - serialize(): object { - // TODO: Generify this further by moving it to smpp session and creating a... "postSerialize" that is abstract - return { - id: this._id, - url: this.url, - username: this._username, - password: this._password, - status: this._status, - defaultSingleJob: this._defaultSingleJob.serialize(), - defaultMultipleJob: this._defaultMultipleJob.serialize(), - preprocessors: this.processors.Preprocessor.map((p: PduProcessor) => p.serialize()), - postprocessors: this.processors.Postprocessor.map((p: PduProcessor) => p.serialize()), - availablePreprocessors: ProcessorManager.getPreprocessorsForType(this.constructor.name).map((p: PduProcessor) => p.serialize()), - availablePostprocessors: ProcessorManager.getPostprocessorsForType(this.constructor.name).map((p: PduProcessor) => p.serialize()), - }; + postSerialize(obj: any): object { + obj.url = this.url; + return obj; } close(): Promise { @@ -292,4 +280,4 @@ export default class Client extends SmppSession { reject(errorMessage); } } -} \ No newline at end of file +} diff --git a/src/SmppSession.ts b/src/SmppSession.ts index 29edfdf..0c53159 100644 --- a/src/SmppSession.ts +++ b/src/SmppSession.ts @@ -6,6 +6,7 @@ import PduProcessor from "./PDUProcessor/PduProcessor"; import Postprocessor from "./PDUProcessor/Postprocessor/Postprocessor"; import LongSmsProcessor from "./PDUProcessor/Preprocessor/Client/LongSmsProcessor"; import Preprocessor from "./PDUProcessor/Preprocessor/Preprocessor"; +import ProcessorManager from "./PDUProcessor/ProcessorManager"; const NanoTimer = require("nanotimer"); const smpp = require("smpp"); @@ -149,7 +150,23 @@ export default abstract class SmppSession { abstract close(): Promise; - abstract serialize(): object; + serialize(): object { + let obj = { + id: this._id, + username: this._username, + password: this._password, + status: this._status, + defaultSingleJob: this._defaultSingleJob.serialize(), + defaultMultipleJob: this._defaultMultipleJob.serialize(), + preprocessors: this.processors.Preprocessor.map((p: PduProcessor) => p.serialize()), + postprocessors: this.processors.Postprocessor.map((p: PduProcessor) => p.serialize()), + availablePreprocessors: ProcessorManager.getPreprocessorsForType(this.constructor.name).map((p: PduProcessor) => p.serialize()), + availablePostprocessors: ProcessorManager.getPostprocessorsForType(this.constructor.name).map((p: PduProcessor) => p.serialize()), + }; + return this.postSerialize(obj); + } + + abstract postSerialize(obj: object): object; on(event: string, callback: (...args: any[]) => void): void { this.eventEmitter.on(event, callback);