[libsoup/wip/xclaesse/xmlrpc] xmlrpc: Use soup_date_new_from_string() to parse date



commit 0d559bc8b448ec6aefbf8cc1ca737257e154862d
Author: Xavier Claessens <xavier claessens collabora com>
Date:   Tue Jun 23 15:19:08 2015 -0400

    xmlrpc: Use soup_date_new_from_string() to parse date

 libsoup/soup-xmlrpc.c |   10 ++++++----
 tests/xmlrpc-test.c   |    4 ++--
 2 files changed, 8 insertions(+), 6 deletions(-)
---
diff --git a/libsoup/soup-xmlrpc.c b/libsoup/soup-xmlrpc.c
index 458284e..823eae6 100644
--- a/libsoup/soup-xmlrpc.c
+++ b/libsoup/soup-xmlrpc.c
@@ -1077,7 +1077,7 @@ parse_value (xmlNode *node, const char **signature, GError **error)
                }
                variant = parse_array (typenode, signature, error);
        } else if (g_str_equal (typename, "dateTime.iso8601")) {
-               GTimeVal t;
+               SoupDate *date;
 
                if (class != G_VARIANT_CLASS_VARIANT &&
                    class != G_VARIANT_CLASS_INT64) {
@@ -1086,14 +1086,16 @@ parse_value (xmlNode *node, const char **signature, GError **error)
                        goto fail;
                }
 
-               content = xmlNodeGetContent (node);
-               if (!g_time_val_from_iso8601 ((char *)content, &t)) {
+               content = xmlNodeGetContent (typenode);
+               date = soup_date_new_from_string ((char *)content);
+               if (!date) {
                        g_set_error (error, SOUP_XMLRPC_ERROR, SOUP_XMLRPC_ERROR_ARGUMENTS,
                                     "Couldn't parse date: %s", content);
                        goto fail;
                }
 
-               variant = g_variant_new_int64 (t.tv_sec);
+               variant = g_variant_new_int64 (soup_date_to_time_t (date));
+               soup_date_free (date);
        } else {
                g_set_error (error, SOUP_XMLRPC_ERROR, SOUP_XMLRPC_ERROR_ARGUMENTS,
                             "Unknown node name %s", typename);
diff --git a/tests/xmlrpc-test.c b/tests/xmlrpc-test.c
index b878d13..c3e378f 100644
--- a/tests/xmlrpc-test.c
+++ b/tests/xmlrpc-test.c
@@ -189,10 +189,10 @@ test_deserializer (void)
                "<member><name>one</name><value><int>1</int></value></member>"
                "<member><name>two</name><value><int>2</int></value></member>"
                "</struct></value></param></params>");
-       verify_deserialization (g_variant_new_parsed ("[<int64 1434161309>]"),
+       verify_deserialization (g_variant_new_parsed ("[<int64 1434146909>]"),
                NULL,
                "<params>"
-               "<param><value><dateTime.iso8601>2015-06-12T22:08:29-04:00</dateTime.iso8601></value></param>"
+               "<param><value><dateTime.iso8601>20150612T22:08:29</dateTime.iso8601></value></param>"
                "</params>");
        verify_deserialization (g_variant_new_parsed ("[<b'bytestring'>]"),
                NULL,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]