[Messaging] converting Message to Json
authorMaciek Blim <m.blim@samsung.com>
Thu, 18 Dec 2014 13:42:51 +0000 (14:42 +0100)
committerMaciek Blim <m.blim@samsung.com>
Fri, 19 Dec 2014 14:53:33 +0000 (15:53 +0100)
Change-Id: I99b0847b7806a48f9075a5169f0b42ec7e1f8ef2
Signed-off-by: Maciek Blim <m.blim@samsung.com>
src/messaging/messaging_util.cc
src/messaging/messaging_util.h

index cb598320de48062d46b3ad11b5f6f3d1e1f456d7..11fdaffc329ef5aca437e8f19868d3f075ae49ac 100644 (file)
@@ -186,6 +186,93 @@ std::string MessagingUtil::messageStatusToString(MessageStatus status) {
     }
 }
 
+picojson::value MessagingUtil::messageToJson(std::shared_ptr<Message> message)
+{
+    picojson::object o;
+
+    std::vector<picojson::value> array;
+    auto vectorToArray = [&array] (std::string& s)->void {
+        array.push_back(picojson::value(s));
+    };
+
+    switch (message->getType()) {
+    case MessageType::SMS:
+        LoggerD("Currently unsupported");
+        // TODO add class which will extended message_service and call message_service_short_msg
+        break;
+    case MessageType::MMS:
+        LoggerD("Currently unsupported");
+        // TODO add class which will extended message_service and call message_service_short_msg
+        o[MESSAGE_ATTRIBUTE_HAS_ATTACHMENT] = picojson::value(message->getHasAttachment());
+        o[MESSAGE_ATTRIBUTE_SUBJECT] = picojson::value(message->getSubject());
+        break;
+    case MessageType::EMAIL:
+
+        std::vector<std::string> cc = message->getCC();
+        for_each(cc.begin(), cc.end(), vectorToArray);
+        o[MESSAGE_ATTRIBUTE_CC] = picojson::value(array);
+        array.clear();
+
+        std::vector<std::string> bcc = message->getBCC();
+        for_each(bcc.begin(), bcc.end(), vectorToArray);
+        o[MESSAGE_ATTRIBUTE_BCC] = picojson::value(array);
+        array.clear();
+
+        o[MESSAGE_ATTRIBUTE_HAS_ATTACHMENT] = picojson::value(message->getHasAttachment());
+        o[MESSAGE_ATTRIBUTE_IS_HIGH_PRIORITY] = picojson::value(message->getIsHighPriority());
+        o[MESSAGE_ATTRIBUTE_SUBJECT] = picojson::value(message->getSubject());
+
+        break;
+    }
+
+    o[MESSAGE_ATTRIBUTE_ID] =
+            message->is_id_set()
+            ? picojson::value(std::to_string(message->getId()))
+            : picojson::value();
+    o[MESSAGE_ATTRIBUTE_CONVERSATION_ID]=
+            message->is_conversation_id_set()
+            ? picojson::value(std::to_string(message->getConversationId()))
+            : picojson::value();
+    o[MESSAGE_ATTRIBUTE_FOLDER_ID] =
+            message->is_folder_id_set()
+            ? picojson::value(std::to_string(message->getFolderId()))
+            : picojson::value();
+    o[MESSAGE_ATTRIBUTE_TYPE] =
+            picojson::value(MessagingUtil::messageTypeToString(message->getType()));
+    o[MESSAGE_ATTRIBUTE_TIMESTAMP] =
+            message->is_timestamp_set()
+            ? picojson::value(static_cast<double>(message->getTimestamp()))
+            : picojson::value();
+    o[MESSAGE_ATTRIBUTE_FROM] =
+            message->is_from_set()
+            ? picojson::value(message->getFrom())
+            : picojson::value();
+
+    std::vector<std::string> to = message->getTO();
+    for_each(to.begin(), to.end(), vectorToArray);
+    o[MESSAGE_ATTRIBUTE_TO] = picojson::value(array);
+    array.clear();
+
+    o[MESSAGE_ATTRIBUTE_IS_READ] = picojson::value(message->getIsRead());
+    o[MESSAGE_ATTRIBUTE_IN_RESPONSE_TO] =
+            message->is_in_response_set()
+            ? picojson::value(std::to_string(message->getInResponseTo()))
+            : picojson::value();
+
+
+    // TODO MessageBody
+
+    // TODO MessageStatus has type MessageStatus
+    //o[MESSAGE_ATTRIBUTE_MESSAGE_STATUS] = picojson::value(message->getMessageStatus());
+
+    // TODO attachments
+    //o[MESSAGE_ATTRIBUTE_ATTACHMENTS] = picojson::value(array);
+
+
+    picojson::value v(o);
+    return v;
+}
+
 std::shared_ptr<Message> MessagingUtil::jsonToMessage(const picojson::value& json)
 {
     LoggerD("Entered");
index e83c8a695de2f6b1c59382af3133399c96b26521..92c30f676f3c6ed2326d585b6c6b1228d671770c 100644 (file)
@@ -74,6 +74,7 @@ public:
     static std::vector<std::string> extractEmailAddresses(
             const std::vector<std::string>& addresses);
 
+    static picojson::value messageToJson(std::shared_ptr<Message> message);
     static std::shared_ptr<Message> jsonToMessage(const picojson::value& json);
 
     template <class T>