52 lines
1.3 KiB
TypeScript
52 lines
1.3 KiB
TypeScript
import {WebSocketEvent} from "./WebSocketEvent";
|
|
|
|
export class WebSocketPayload {
|
|
set event(value: WebSocketEvent) {
|
|
this._event = value;
|
|
}
|
|
|
|
set status(value: boolean) {
|
|
this._status = value;
|
|
}
|
|
|
|
set data(value: object | undefined) {
|
|
this._data = value;
|
|
}
|
|
|
|
private _event: WebSocketEvent;
|
|
private _status: boolean;
|
|
private _data: object | undefined;
|
|
|
|
|
|
get event(): WebSocketEvent {
|
|
return this._event;
|
|
}
|
|
|
|
get status(): boolean {
|
|
return this._status;
|
|
}
|
|
|
|
get data(): object | undefined {
|
|
return this._data;
|
|
}
|
|
|
|
constructor(event: WebSocketEvent, status: boolean, data?: object) {
|
|
this._event = event;
|
|
this._status = status;
|
|
this._data = data;
|
|
}
|
|
|
|
public static parseFromJSON(json: string): WebSocketPayload | null {
|
|
json = (window) ? atob(json) : Buffer.from(json, "base64").toString();
|
|
let rawPayload: { event: string, status: boolean, data: object };
|
|
try {
|
|
rawPayload = JSON.parse(json);
|
|
} catch (e) {
|
|
return null;
|
|
}
|
|
|
|
let wsEvent = <keyof typeof WebSocketEvent> rawPayload.event;
|
|
|
|
return new WebSocketPayload(wsEvent, rawPayload.status, rawPayload.data);
|
|
}
|
|
} |