From 8a4a014a05498a27c31940b192b656317c3f9227 Mon Sep 17 00:00:00 2001 From: Andrzej Popowski Date: Thu, 29 Jan 2015 12:27:20 +0100 Subject: [PATCH] [Messaging] Handling inline attachments Change-Id: I6bd67abbc7dbe601f4b058fe448cb2a166ab8f81 Signed-off-by: Andrzej Popowski --- src/messaging/messaging_api.js | 2 +- src/messaging/messaging_util.cc | 25 ++++++++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/messaging/messaging_api.js b/src/messaging/messaging_api.js index d3858c2..4f90749 100644 --- a/src/messaging/messaging_api.js +++ b/src/messaging/messaging_api.js @@ -609,7 +609,7 @@ function MessageBody(data) { set: function (value) { if (value instanceof InternalValues_) { _internal.inlineAttachments = value.inlineAttachments; - } else { + } else if (T_.isArray(value)) { _internal.inlineAttachments = value; } }, diff --git a/src/messaging/messaging_util.cc b/src/messaging/messaging_util.cc index 3f026d1..f249522 100644 --- a/src/messaging/messaging_util.cc +++ b/src/messaging/messaging_util.cc @@ -60,6 +60,7 @@ const char* MESSAGE_BODY_ATTRIBUTE_MESSAGE_ID = "messageId"; const char* MESSAGE_BODY_ATTRIBUTE_LOADED = "loaded"; const char* MESSAGE_BODY_ATTRIBUTE_PLAIN_BODY = "plainBody"; const char* MESSAGE_BODY_ATTRIBUTE_HTML_BODY = "htmlBody"; +const char* MESSAGE_BODY_ATTRIBUTE_INLINE_ATTACHMENTS = "inlineAttachments"; const char* MESSAGE_ATTRIBUTE_MESSAGE_ATTACHMENTS = "attachments"; const char* MESSAGE_ATTACHMENT_ATTRIBUTE_ID = "id"; @@ -285,6 +286,18 @@ picojson::value MessagingUtil::messageBodyToJson(std::shared_ptr bo b[MESSAGE_BODY_ATTRIBUTE_LOADED] = picojson::value(body->getLoaded()); b[MESSAGE_BODY_ATTRIBUTE_PLAIN_BODY] = picojson::value(body->getPlainBody()); b[MESSAGE_BODY_ATTRIBUTE_HTML_BODY] = picojson::value(body->getHtmlBody()); + + std::vector array; + + auto vectorToAttachmentArray = [&array] (std::shared_ptr& a)->void { + array.push_back(MessagingUtil::messageAttachmentToJson(a)); + }; + auto inlineAttachments = body->getInlineAttachments(); + for_each(inlineAttachments.begin(), inlineAttachments.end(), vectorToAttachmentArray); + + b[MESSAGE_BODY_ATTRIBUTE_INLINE_ATTACHMENTS] = picojson::value(array); + array.clear(); + picojson::value v(b); return v; } @@ -364,7 +377,6 @@ picojson::value MessagingUtil::messageToJson(std::shared_ptr message) std::shared_ptr body = message->getBody(); o[MESSAGE_ATTRIBUTE_BODY] = MessagingUtil::messageBodyToJson(body); - auto vectorToAttachmentArray = [&array] (std::shared_ptr& a)->void { array.push_back(MessagingUtil::messageAttachmentToJson(a)); }; @@ -604,6 +616,17 @@ std::shared_ptr MessagingUtil::jsonToMessageBody(const picojson::va body->setMessageId(messageId); } + AttachmentPtrVector inlineAttachments; + auto ma = data.at(MESSAGE_BODY_ATTRIBUTE_INLINE_ATTACHMENTS ).get(); + + auto arrayVectorAttachmentConverter = [&inlineAttachments] (picojson::value& v)->void + { + inlineAttachments.push_back(jsonToMessageAttachment(v)); + }; + + for_each(ma.begin(), ma.end(), arrayVectorAttachmentConverter); + body->setInlineAttachments(inlineAttachments); + return body; } -- 2.7.4