MInfoProvider: Started Tmdb images support
[maevies] / src / mvs-minfo-provider.c
index d51149c..af4ff2b 100644 (file)
@@ -23,6 +23,7 @@
 #include <json-glib/json-glib.h>
 
 #include "mvs-tmdb-movie.h"
+#include "mvs-watc-movie.h"
 
 #define TMDB_API_KEY "249e1a42df9bee09fac5e92d3a51396b"
 #define TMDB_LANGUAGE "en"
@@ -119,7 +120,7 @@ mvs_minfo_provider_class_init (MvsMInfoProviderClass *klass)
 
         signals[RESPONSE_RECEIVED] = g_signal_new ("response-received", MVS_TYPE_MINFO_PROVIDER,
                         G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
-                        G_STRUCT_OFFSET (MvsMInfoProviderClass, response_callback),
+                        0,
                         NULL,
                         NULL,
                         g_cclosure_marshal_VOID__POINTER,
@@ -148,11 +149,26 @@ create_tmdb_movie (xmlNodePtr node)
         xmlNodePtr cur_node = NULL;
         MvsTmdbMovie *movie_info = mvs_tmdb_movie_new ();
 
+        /* We use the loop to append each property to the movie object */
         for (cur_node = node; cur_node; cur_node = cur_node->next) {
                 if (cur_node->type == XML_ELEMENT_NODE) {
-                        gchar *value = xmlNodeGetContent (cur_node);
-
-                        g_object_set (movie_info, cur_node->name, value, NULL);
+                        gchar *value = NULL;
+
+                        if (g_strcmp0 (cur_node->name, "images") == 0) {
+                                xmlNodePtr cur_image = NULL;
+                                for (cur_image = cur_node->children; cur_image;
+                                                cur_image = cur_image->next) {
+
+                                        value = xmlGetProp (cur_image, "url");
+                                        g_message ("(%s: %s)", cur_image->name, value);
+                                        g_free (value);
+                                }
+                        }
+                        else {
+                                value = xmlNodeGetContent (cur_node);
+                                g_object_set (movie_info, cur_node->name, value, NULL);
+                                g_free (value);
+                        }
                 }
         }
         return movie_info;
@@ -201,7 +217,7 @@ parse_xml (const char *xml_data, goffset length)
                 list = generate_list (nodeset);
         }
 
-        xmlXPathFreeNodeSetList (xpath_obj);
+        xmlXPathFreeObject (xpath_obj);
         xmlXPathFreeContext (context_ptr);
         xmlFreeDoc (document);
 
@@ -253,16 +269,20 @@ parse_json (const char *json_data, goffset length)
         for (i = 0; i < array_length; i++) {
                 const gchar *result =
                                 json_array_get_string_element (results, i);
-                g_message ("Result %d: %s\n", i, result);
+                MvsWatcMovie *watc_movie = mvs_watc_movie_new (result);
+                list = g_list_prepend (list, watc_movie);
         }
 
         g_object_unref (parser);
 
+        if (list)
+                list = g_list_reverse (list);
+
         return list;
 }
 
 static void
-process_response (SoupSession *session, SoupMessage *message,
+process_response_cb (SoupSession *session, SoupMessage *message,
                     gpointer user_data)
 {
         MvsMInfoProvider *self = MVS_MINFO_PROVIDER (user_data);
@@ -316,6 +336,7 @@ get_query_uri (MvsMInfoProvider *self, const char *query)
                 g_warning ("Service unsupported\n");
         }
 
+        g_message ("%s", uri);
         return uri;
 }
 
@@ -340,7 +361,7 @@ mvs_minfo_provider_query (MvsMInfoProvider *self, MvsService service,
 
         if (message) {
                 soup_session_queue_message (session, message,
-                                process_response, self);
+                                process_response_cb, self);
                 message_queued = TRUE;
         }