diff options
author | David Laban <david.laban@collabora.co.uk> | 2011-05-17 19:55:57 -0400 |
---|---|---|
committer | David Laban <david.laban@collabora.co.uk> | 2011-05-17 19:55:57 -0400 |
commit | 72da94f04198dc07f8161b54e56a336a29678255 (patch) | |
tree | 0c5984c0fa10affb9456599e2c35c5a454373f86 | |
parent | 887a15b3786107bd1ac1110408fa3cfa4c9f7944 (diff) | |
download | telepathy-logger-72da94f04198dc07f8161b54e56a336a29678255.tar.gz |
Store, save and test message-token and supersedes-token
-rw-r--r-- | telepathy-logger/log-store-xml.c | 46 | ||||
-rw-r--r-- | telepathy-logger/text-channel.c | 2 | ||||
-rw-r--r-- | tests/dbus/test-tpl-log-store-xml.c | 2 |
3 files changed, 40 insertions, 10 deletions
diff --git a/telepathy-logger/log-store-xml.c b/telepathy-logger/log-store-xml.c index 4357d73..152f328 100644 --- a/telepathy-logger/log-store-xml.c +++ b/telepathy-logger/log-store-xml.c @@ -494,12 +494,13 @@ add_text_event (TplLogStoreXml *self, TpAccount *account; TplEntity *sender; const gchar *body_str; + const gchar *token_str; gchar *avatar_token = NULL; gchar *body = NULL; gchar *timestamp = NULL; gchar *contact_name = NULL; gchar *contact_id = NULL; - gchar *log_str = NULL; + GString *event = NULL; TpChannelTextMessageType msg_type; g_return_val_if_fail (error == NULL || *error == NULL, FALSE); @@ -535,29 +536,46 @@ add_text_event (TplLogStoreXml *self, avatar_token = g_markup_escape_text (tpl_entity_get_avatar_token (sender), -1); - log_str = g_strdup_printf ("<message time='%s' id='%s' name='%s' " - "token='%s' isuser='%s' type='%s'>" - "%s</message>\n" LOG_FOOTER, timestamp, - contact_id, contact_name, + event = g_string_new (NULL); + g_string_printf (event, "<message time='%s' id='%s' name='%s' " + "token='%s' isuser='%s' type='%s'", + timestamp, contact_id, contact_name, avatar_token, tpl_entity_get_entity_type (sender) == TPL_ENTITY_SELF ? "true" : "false", - _tpl_text_event_message_type_to_str (msg_type), - body); + _tpl_text_event_message_type_to_str (msg_type)); + + token_str = tpl_text_event_get_message_token (message); + if (token_str != NULL) + { + gchar *message_token = g_markup_escape_text (token_str, -1); + g_string_append_printf (event, " message-token='%s'", message_token); + g_free (message_token); + } + + token_str = tpl_text_event_get_supersedes_token (message); + if (token_str != NULL) + { + gchar *supersedes_token = g_markup_escape_text (token_str, -1); + g_string_append_printf (event, " supersedes-token='%s'", + supersedes_token); + } + + g_string_append_printf (event, ">%s</message>\n" LOG_FOOTER, body); DEBUG ("writing text event from %s (ts %s)", contact_id, timestamp); ret = _log_store_xml_write_to_store (self, account, - _tpl_event_get_target (TPL_EVENT (message)), log_str, TPL_TYPE_TEXT_EVENT, - error); + _tpl_event_get_target (TPL_EVENT (message)), event->str, + TPL_TYPE_TEXT_EVENT, error); out: g_free (contact_id); g_free (contact_name); g_free (timestamp); g_free (body); - g_free (log_str); + g_string_free (event, TRUE); g_free (avatar_token); if (bus_daemon != NULL) @@ -1051,6 +1069,8 @@ parse_text_node (TplLogStoreXml *self, gchar *sender_name; gchar *sender_avatar_token; gchar *body; + gchar *message_token; + gchar *supersedes_token; gchar *is_user_str; gboolean is_user = FALSE; gchar *msg_type_str; @@ -1062,6 +1082,8 @@ parse_text_node (TplLogStoreXml *self, sender_name = (gchar *) xmlGetProp (node, (const xmlChar *) "name"); sender_avatar_token = (gchar *) xmlGetProp (node, (const xmlChar *) "token"); + message_token = (gchar *) xmlGetProp (node, (const xmlChar *) "message-token"); + supersedes_token = (gchar *) xmlGetProp (node, (const xmlChar *) "supersedes-token"); is_user_str = (gchar *) xmlGetProp (node, (const xmlChar *) "isuser"); msg_type_str = (gchar *) xmlGetProp (node, (const xmlChar *) "type"); @@ -1095,6 +1117,8 @@ parse_text_node (TplLogStoreXml *self, /* TplTextEvent */ "message-type", msg_type, "message", body, + "message-token", message_token, + "supersedes-token", supersedes_token, NULL); g_object_unref (sender); @@ -1103,6 +1127,8 @@ parse_text_node (TplLogStoreXml *self, xmlFree (sender_id); xmlFree (sender_name); xmlFree (body); + xmlFree (message_token); + xmlFree (supersedes_token); xmlFree (is_user_str); xmlFree (msg_type_str); xmlFree (sender_avatar_token); diff --git a/telepathy-logger/text-channel.c b/telepathy-logger/text-channel.c index a2c7f5e..5af8dfa 100644 --- a/telepathy-logger/text-channel.c +++ b/telepathy-logger/text-channel.c @@ -397,6 +397,8 @@ tpl_text_channel_store_message (TplTextChannel *self, "receiver", receiver, "sender", sender, "timestamp", timestamp, + "message-token", tp_message_get_token (message), + "supersedes-token", tp_message_get_supersedes (message), /* TplTextEvent */ "message-type", type, "message", text, diff --git a/tests/dbus/test-tpl-log-store-xml.c b/tests/dbus/test-tpl-log-store-xml.c index db89bed..2deea57 100644 --- a/tests/dbus/test-tpl-log-store-xml.c +++ b/tests/dbus/test-tpl-log-store-xml.c @@ -290,6 +290,8 @@ assert_cmp_text_event (TplEvent *event, ==, tpl_text_event_get_message_type (TPL_TEXT_EVENT (stored_event))); g_assert_cmpstr (tpl_text_event_get_message (TPL_TEXT_EVENT (event)), ==, tpl_text_event_get_message (TPL_TEXT_EVENT (stored_event))); + g_assert_cmpstr (tpl_text_event_get_message_token (TPL_TEXT_EVENT (event)), + ==, tpl_text_event_get_message_token (TPL_TEXT_EVENT (stored_event))); } |