From cd9bece8c3da103acc321449ccf71e0e75c5915b Mon Sep 17 00:00:00 2001 From: Damyan Mitev <damyan.mitev@vereign.com> Date: Wed, 27 Nov 2019 17:17:41 +0200 Subject: [PATCH] add extractMessageID to penpal methods --- javascript/src/helpers/mailparser.js | 21 +++++++++++++++++++++ javascript/src/iframe/viamapi-iframe.js | 6 ++++++ 2 files changed, 27 insertions(+) diff --git a/javascript/src/helpers/mailparser.js b/javascript/src/helpers/mailparser.js index a6da68a..2471b8f 100644 --- a/javascript/src/helpers/mailparser.js +++ b/javascript/src/helpers/mailparser.js @@ -122,6 +122,27 @@ export function fixNewLines(mime) { return mime.replace(newline, "\r\n"); } +export function extractMessageID(mime) { + if (mime.startsWith("\r\n")) { + mime = mime.substring(2); //should not happen + } + const headersEndIndex = mime.indexOf("\r\n\r\n"); //the first empty line + if (headersEndIndex < 0) { + return null; + } + const mimeHeaders = mime.substring(0, headersEndIndex); + const headers = libmime.decodeHeaders(mimeHeaders); + let messageId = headers["Message-ID"]; + if (Array.isArray(messageId) && messageId.length > 0) { + messageId = messageId[0]; + } + if (messageId && typeof messageId === "string") { + messageId = messageId.replace(/^</, '').replace(/>$/, ''); + return messageId; + } + return null; +} + export function parseMIME(mime) { let mimeStart = 0; let headersEnd = mime.indexOf("\r\n\r\n"); //the first empty line diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js index a4c1db1..370ce07 100644 --- a/javascript/src/iframe/viamapi-iframe.js +++ b/javascript/src/iframe/viamapi-iframe.js @@ -7,6 +7,7 @@ import { base64ToByteArray, byteArrayToBase64 } from "../utilities/stringUtilities"; +import { extractMessageID } from "../helpers/mailparser"; const QRCode = require("qrcode"); const Penpal = require("penpal").default; @@ -1740,6 +1741,11 @@ const connection = Penpal.connectToParent({ "Currently authenticated identity" ); }, + extractMessageID(mime) { + return new Penpal.Promise(result => { + result(extractMessageID(mime)); + }); + }, stringToUtf8ByteArray(str) { return new Penpal.Promise(result => { result(stringToUtf8ByteArray(str)); -- GitLab