#include <json-glib/json-glib.h>
#include "mvs-tmdb-movie.h"
+#include "mvs-tmdb-image.h"
#include "mvs-watc-movie.h"
#define TMDB_API_KEY "249e1a42df9bee09fac5e92d3a51396b"
TMDB_FORMAT,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- signals[RESPONSE_RECEIVED] = g_signal_new ("response-received", MVS_TYPE_MINFO_PROVIDER,
+ signals[RESPONSE_RECEIVED] = g_signal_new ("response-received",
+ MVS_TYPE_MINFO_PROVIDER,
G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
0,
NULL,
NULL,
- g_cclosure_marshal_VOID__POINTER,
+ g_cclosure_marshal_VOID__UINT_POINTER,
G_TYPE_NONE,
- 1,
- G_TYPE_POINTER);
+ 2,
+ G_TYPE_UINT,
+ G_TYPE_POINTER,
+ NULL);
}
static void
return g_object_new (MVS_TYPE_MINFO_PROVIDER, NULL);
}
+static MvsTmdbImage*
+create_tmdb_image (xmlNodePtr node)
+{
+ MvsTmdbImage *image = mvs_tmdb_image_new ();
+ gchar *value = NULL;
+ int i;
+
+ /* <image type="poster"
+ * url="http://....jpg"
+ * size="original"
+ * id="4bc91...e007304"/> */
+
+ for (i = 0; i < LAST_FIELD; i ++) {
+
+ const gchar *image_field = mvs_tmdb_image_get_field (i);
+
+ value = xmlGetProp (node, image_field);
+ g_object_set (image, image_field, value, NULL);
+
+ g_free (value);
+ }
+
+ return image;
+}
+
static MvsTmdbMovie*
create_tmdb_movie (xmlNodePtr node)
{
xmlNodePtr cur_node = NULL;
MvsTmdbMovie *movie_info = mvs_tmdb_movie_new ();
+ GList *image_list = NULL;
/* 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);
- g_free (value);
+ 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) {
+
+ MvsTmdbImage *tmdb_image = create_tmdb_image (cur_image);
+ image_list = g_list_append (image_list, tmdb_image);
+ }
+ }
+ else {
+ value = xmlNodeGetContent (cur_node);
+ g_object_set (movie_info, cur_node->name, value, NULL);
+ g_free (value);
+ }
}
}
+
+ mvs_tmdb_movie_set_images (movie_info, image_list);
+
return movie_info;
}
NULL,
NULL,
XML_PARSE_NOBLANKS | XML_PARSE_RECOVER);
- g_return_if_fail (document);
+ g_return_val_if_fail (document, NULL);
xmlXPathContextPtr context_ptr = xmlXPathNewContext (document);
MvsMInfoProvider *self = MVS_MINFO_PROVIDER (user_data);
const gchar *mime = NULL;
GList *list = NULL;
+ guint service;
if (!SOUP_STATUS_IS_SUCCESSFUL (message->status_code) ||
message->response_body->length <= 0) {
(message->response_headers, NULL);
g_message ("Mime type: %s\n", mime);
- if (g_strcmp0 (mime, "text/xml") == 0)
+ if (g_strcmp0 (mime, "text/xml") == 0) {
list = parse_xml (message->response_body->data,
message->response_body->length);
- else if (g_strcmp0 (mime, "application/json") == 0)
+ service = MVS_SERVICE_TMDB;
+ }
+ else if (g_strcmp0 (mime, "application/json") == 0) {
list = parse_json (message->response_body->data,
message->response_body->length);
+ service = MVS_SERVICE_WATC;
+ }
}
- g_signal_emit (self, signals[RESPONSE_RECEIVED], 0, list);
+ g_signal_emit (self, signals[RESPONSE_RECEIVED], 0, service, list);
}
static gchar *
g_warning ("Service unsupported\n");
}
+ g_message ("%s", uri);
return uri;
}