From 1969b2666abf99182631441e75a03f0e6ad2288c Mon Sep 17 00:00:00 2001 From: Fedor Katurov <gotham48@gmail.com> Date: Fri, 28 May 2021 11:35:11 +0700 Subject: [PATCH] made event safe json stringify --- src/service/vk/handlers/PostNewHandler.ts | 6 +---- src/service/vk/handlers/VkEventHandler.ts | 29 ++++++++++++++++------- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/service/vk/handlers/PostNewHandler.ts b/src/service/vk/handlers/PostNewHandler.ts index 66ab5e6..9c60286 100644 --- a/src/service/vk/handlers/PostNewHandler.ts +++ b/src/service/vk/handlers/PostNewHandler.ts @@ -115,11 +115,7 @@ export class PostNewHandler extends VkEventHandler<Fields, Values> { this.channel.markdown ); - const event = await this.createEvent( - id, - msg.message_id, - context.wall.toJSON() - ); + const event = await this.createEvent(id, msg.message_id, context); await this.db.createPost( event!.id, diff --git a/src/service/vk/handlers/VkEventHandler.ts b/src/service/vk/handlers/VkEventHandler.ts index 5afd038..edc5249 100644 --- a/src/service/vk/handlers/VkEventHandler.ts +++ b/src/service/vk/handlers/VkEventHandler.ts @@ -102,13 +102,26 @@ export class VkEventHandler< tgMessageId: number, text: Record<any, any> ) => { - return await this.db.createEvent( - this.type, - id, - this.group.id, - this.channel.id, - tgMessageId, - text - ); + let plain = ""; + + try { + plain = JSON.stringify(text); + } catch (e) { + logger.warn(`createEvent: failed to stringify JSON: ${e}`, e); + plain = text.toString(); + } + + try { + return await this.db.createEvent( + this.type, + id, + this.group.id, + this.channel.id, + tgMessageId, + { event: plain } + ); + } catch (e) { + logger.warn("createEvent error", e); + } }; }