#include "mvs-minfo-provider.h"
+#include <libxml/parser.h>
+#include <libxml/xpath.h>
+
#define TMDB_API_KEY "249e1a42df9bee09fac5e92d3a51396b"
#define TMDB_LANGUAGE "en"
#define TMDB_FORMAT "xml"
#define TMDB_METHOD "Movie.search"
#define TMDB_BASE_URL "http://api.themoviedb.org/2.1/%s/%s/%s/%s/%s"
+#define TMDB_MOVIE_XPATH "/OpenSearchDescription/movies/movie"
G_DEFINE_TYPE (MvsMInfoProvider, mvs_minfo_provider, G_TYPE_OBJECT)
}
static void
-parse_response (SoupSession *session, SoupMessage *message,
+display_movie_info (xmlNodePtr node)
+{
+ xmlNodePtr cur_node = NULL;
+
+ for (cur_node = node; cur_node; cur_node = cur_node->next) {
+ if (cur_node->type == XML_ELEMENT_NODE) {
+ gchar *value = xmlNodeGetContent (cur_node);
+ g_print ("[%s] = %s\n", cur_node->name, value);
+ }
+ }
+}
+
+static void
+iterate_list (xmlNodeSetPtr node_set)
+{
+ int i = 0;
+
+ for (i = 0; i < node_set->nodeNr; i++) {
+ xmlNodePtr node = node_set->nodeTab[i];
+ if (node->type == XML_ELEMENT_NODE) {
+ display_movie_info (node->children);
+ }
+ }
+}
+
+static void
+parse_xml (const char *xml_data, goffset length)
+{
+ xmlDocPtr document = xmlReadMemory (xml_data, length,
+ NULL,
+ NULL,
+ XML_PARSE_NOBLANKS | XML_PARSE_RECOVER);
+ g_return_if_fail (document);
+
+ xmlXPathContextPtr context_ptr = xmlXPathNewContext (document);
+
+ xmlXPathObjectPtr xpath_obj =
+ xmlXPathEvalExpression (TMDB_MOVIE_XPATH, context_ptr);
+
+ xmlNodeSetPtr nodeset = xpath_obj->nodesetval;
+
+ if (nodeset->nodeNr > 0) {
+ iterate_list (nodeset);
+ }
+
+ xmlXPathFreeNodeSetList (xpath_obj);
+ xmlXPathFreeContext (context_ptr);
+ xmlFreeDoc (document);
+}
+
+static void
+response_callback (SoupSession *session, SoupMessage *message,
gpointer user_data)
{
MvsMInfoProvider *self = MVS_MINFO_PROVIDER (user_data);
mime = soup_message_headers_get_content_type
(message->response_headers, NULL);
- g_print ("Response OK. Mime type: %s\n", mime);
- g_print ("Content:\n%s\n", message->response_body->data);
+ parse_xml (message->response_body->data,
+ message->response_body->length);
}
g_signal_emit (self, signals[RESPONSE_RECEIVED], 0);
if (message) {
soup_session_queue_message (session, message,
- parse_response, self);
+ response_callback, self);
message_queued = TRUE;
}
+++ /dev/null
-/*
- * mvs-movie-info.c
- *
- * This file is part of maevies
- * Copyright (C) 2010 Simón Pena <spenap@gmail.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- */
-
-#include "mvs-movie-info.h"
-
-G_DEFINE_TYPE (MvsMovieInfo, mvs_movie_info, G_TYPE_OBJECT)
-
-enum {
- PROP_0,
- PROP_HAS_STINGERS,
- PROP_TITLE,
- PROP_DIRECTOR,
- PROP_CAST,
- PROP_RANKING,
- PROP_RELEASE_DATE,
- PROP_OVERVIEW,
- PROP_URL,
- PROP_SCHEDULE,
-};
-
-#define GET_PRIVATE(o) \
- (G_TYPE_INSTANCE_GET_PRIVATE ((o), MVS_TYPE_MOVIE_INFO, MvsMovieInfoPrivate))
-
-struct _MvsMovieInfoPrivate {
- gboolean has_stingers;
- gchar *title;
- gchar *director;
- gchar *cast;
- gfloat ranking;
- gchar *release_date;
- gchar *overview;
- gchar *url;
- gchar *schedule;
-};
-
-static void
-mvs_movie_info_get_property (GObject *object, guint property_id,
- GValue *value, GParamSpec *pspec)
-{
- MvsMovieInfo *self = MVS_MOVIE_INFO (object);
-
- switch (property_id) {
- case PROP_HAS_STINGERS:
- g_value_set_boolean (value, self->priv->has_stingers);
- break;
- case PROP_TITLE:
- g_value_set_string (value, self->priv->title);
- break;
- case PROP_DIRECTOR:
- g_value_set_string (value, self->priv->director);
- break;
- case PROP_CAST:
- g_value_set_string (value, self->priv->cast);
- break;
- case PROP_RANKING:
- g_value_set_float (value, self->priv->ranking);
- break;
- case PROP_RELEASE_DATE:
- g_value_set_string (value, self->priv->release_date);
- break;
- case PROP_OVERVIEW:
- g_value_set_string (value, self->priv->overview);
- break;
- case PROP_URL:
- g_value_set_string (value, self->priv->url);
- break;
- case PROP_SCHEDULE:
- g_value_set_string (value, self->priv->schedule);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- }
-}
-
-static void
-mvs_movie_info_set_property (GObject *object, guint property_id,
- const GValue *value, GParamSpec *pspec)
-{
- MvsMovieInfo *self = MVS_MOVIE_INFO (object);
- GDate *date = NULL;
-
- switch (property_id) {
- case PROP_HAS_STINGERS:
- mvs_movie_info_set_stingers (self, g_value_get_boolean (value));
- break;
- case PROP_TITLE:
- mvs_movie_info_set_title (self, g_value_get_string (value));
- break;
- case PROP_DIRECTOR:
- mvs_movie_info_set_director (self, g_value_get_string (value));
- break;
- case PROP_CAST:
- mvs_movie_info_set_cast (self, g_value_get_string (value));
- break;
- case PROP_RANKING:
- mvs_movie_info_set_ranking (self, g_value_get_float (value));
- break;
- case PROP_RELEASE_DATE:
- mvs_movie_info_set_release_date (self, g_value_get_string (value));
- break;
- case PROP_OVERVIEW:
- mvs_movie_info_set_overview (self, g_value_get_string (value));
- break;
- case PROP_URL:
- mvs_movie_info_set_url (self, g_value_get_string (value));
- break;
- case PROP_SCHEDULE:
- mvs_movie_info_set_schedule (self, g_value_get_string (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- }
-}
-
-static void
-mvs_movie_info_finalize (GObject *object)
-{
- MvsMovieInfo *self = MVS_MOVIE_INFO (object);
-
- g_free (self->priv->cast);
- g_free (self->priv->director);
- g_free (self->priv->overview);
- g_free (self->priv->release_date);
- g_free (self->priv->schedule);
- g_free (self->priv->title);
- g_free (self->priv->url);
-
- G_OBJECT_CLASS (mvs_movie_info_parent_class)->finalize (object);
-}
-
-static void
-mvs_movie_info_class_init (MvsMovieInfoClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- g_type_class_add_private (klass, sizeof (MvsMovieInfoPrivate));
-
- object_class->get_property = mvs_movie_info_get_property;
- object_class->set_property = mvs_movie_info_set_property;
- object_class->finalize = mvs_movie_info_finalize;
-
-
- g_object_class_install_property
- (object_class, PROP_CAST,
- g_param_spec_string ("cast", "Movie cast", "The movie cast",
- NULL,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property
- (object_class, PROP_DIRECTOR,
- g_param_spec_string ("director", "Movie director", "The movie director",
- NULL,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property
- (object_class, PROP_HAS_STINGERS,
- g_param_spec_boolean ("stingers", "Has stingers", "The movie has stingers",
- FALSE,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property
- (object_class, PROP_OVERVIEW,
- g_param_spec_string ("overview", "Movie overview", "The movie overview",
- NULL,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property
- (object_class, PROP_RANKING,
- g_param_spec_float ("ranking", "Movie ranking", "The movie ranking",
- 0.0,
- 10.0,
- 5.0,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property
- (object_class, PROP_RELEASE_DATE,
- g_param_spec_string ("release", "Movie release date", "The movie release date",
- NULL,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property
- (object_class, PROP_SCHEDULE,
- g_param_spec_string ("schedule", "Movie schedule", "The movie schedule",
- NULL,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property
- (object_class, PROP_TITLE,
- g_param_spec_string ("title", "Movie title", "The movie title",
- NULL,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property
- (object_class, PROP_URL,
- g_param_spec_string ("url", "Movie URL", "The movie url",
- NULL,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-}
-
-static void
-mvs_movie_info_init (MvsMovieInfo *self)
-{
- self->priv = GET_PRIVATE (self);
- self->priv->cast = NULL;
- self->priv->director = NULL;
- self->priv->has_stingers = FALSE;
- self->priv->overview = NULL;
- self->priv->ranking = 5;
- self->priv->release_date = NULL;
- self->priv->schedule = NULL;
- self->priv->title = NULL;
- self->priv->url = NULL;
-}
-
-MvsMovieInfo*
-mvs_movie_info_new (void)
-{
- return g_object_new (MVS_TYPE_MOVIE_INFO, NULL);
-}
-
-gboolean
-mvs_movie_info_set_stingers (MvsMovieInfo *self, gboolean has_stingers)
-{
- g_return_val_if_fail (self, FALSE);
-
- self->priv->has_stingers = has_stingers;
-
- return TRUE;
-}
-
-gboolean
-mvs_movie_info_set_title (MvsMovieInfo *self, const gchar *title)
-{
- g_return_val_if_fail (self, FALSE);
-
- g_free (self->priv->title);
-
- self->priv->title = g_strdup (title);
-
- return TRUE;
-}
-
-gboolean
-mvs_movie_info_set_director (MvsMovieInfo *self, const gchar *director)
-{
- g_return_val_if_fail (self, FALSE);
-
- g_free (self->priv->director);
-
- self->priv->director = g_strdup (director);
-
- return TRUE;
-}
-
-gboolean
-mvs_movie_info_set_cast (MvsMovieInfo *self, const gchar *cast)
-{
- g_return_val_if_fail (self, FALSE);
-
- g_free (self->priv->cast);
-
- self->priv->cast = g_strdup (cast);
-
- return TRUE;
-}
-
-gboolean
-mvs_movie_info_set_ranking (MvsMovieInfo *self, gfloat ranking)
-{
- g_return_val_if_fail (self, FALSE);
- g_return_val_if_fail (ranking < 10 && ranking > 0, FALSE);
-
- self->priv->ranking = ranking;
-
- return FALSE;
-}
-
-gboolean
-mvs_movie_info_set_release_date (MvsMovieInfo *self,
- const gchar *released)
-{
- g_return_val_if_fail (self, FALSE);
-
- g_free (self->priv->release_date);
-
- self->priv->release_date = g_strdup (released);
-
- return TRUE;
-}
-gboolean
-mvs_movie_info_set_overview (MvsMovieInfo *self,
- const gchar *overview)
-{
- g_return_val_if_fail (self, FALSE);
-
- g_free (self->priv->overview);
-
- self->priv->overview = g_strdup (overview);
-
- return TRUE;
-}
-
-gboolean
-mvs_movie_info_set_url (MvsMovieInfo *self, const gchar *url)
-{
- g_return_val_if_fail (self, FALSE);
-
- g_free (self->priv->url);
-
- self->priv->url = g_strdup (url);
-
- return TRUE;
-}
-
-gboolean
-mvs_movie_info_set_schedule (MvsMovieInfo *self,
- const gchar *schedule)
-{
- g_return_val_if_fail (self, FALSE);
-
- g_free (self->priv->schedule);
-
- self->priv->schedule = g_strdup (schedule);
-
- return TRUE;
-}
+++ /dev/null
-/*
- * mvs-movie-info.h
- *
- * This file is part of maevies
- * Copyright (C) 2010 Simón Pena <spenap@gmail.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- */
-
-#ifndef _MVS_MOVIE_INFO
-#define _MVS_MOVIE_INFO
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define MVS_TYPE_MOVIE_INFO mvs_movie_info_get_type()
-#define MVS_MOVIE_INFO(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), MVS_TYPE_MOVIE_INFO, MvsMovieInfo))
-#define MVS_MOVIE_INFO_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), MVS_TYPE_MOVIE_INFO, MvsMovieInfoClass))
-#define IS_MVS_MOVIE_INFO(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MVS_TYPE_MOVIE_INFO))
-#define IS_MVS_MOVIE_INFO_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), MVS_TYPE_MOVIE_INFO))
-#define MVS_MOVIE_INFO_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), MVS_TYPE_MOVIE_INFO, MvsMovieInfoClass))
-
-typedef struct _MvsMovieInfoPrivate MvsMovieInfoPrivate;
-
-typedef struct {
- GObject parent;
-
- /* <private> */
- MvsMovieInfoPrivate *priv;
-} MvsMovieInfo;
-
-typedef struct {
- GObjectClass parent_class;
-} MvsMovieInfoClass;
-
-GType mvs_movie_info_get_type (void);
-MvsMovieInfo* mvs_movie_info_new (void);
-
-gboolean mvs_movie_info_set_stingers (MvsMovieInfo *self,
- gboolean has_stingers);
-gboolean mvs_movie_info_set_title (MvsMovieInfo *self, const gchar *title);
-gboolean mvs_movie_info_set_director (MvsMovieInfo *self,
- const gchar *director);
-gboolean mvs_movie_info_set_cast (MvsMovieInfo *self, const gchar *cast);
-gboolean mvs_movie_info_set_ranking (MvsMovieInfo *self, gfloat ranking);
-gboolean mvs_movie_info_set_release_date (MvsMovieInfo *self,
- const gchar *released);
-gboolean mvs_movie_info_set_overview (MvsMovieInfo *self,
- const gchar *overview);
-gboolean mvs_movie_info_set_url (MvsMovieInfo *self, const gchar *url);
-gboolean mvs_movie_info_set_schedule (MvsMovieInfo *self,
- const gchar *schedule);
-
-G_END_DECLS
-
-#endif /* _MVS_MOVIE_INFO */
--- /dev/null
+/*
+ * mvs-movie-info.c
+ *
+ * This file is part of maevies
+ * Copyright (C) 2010 Simón Pena <spenap@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ */
+
+#include "mvs-movie-info.h"
+
+G_DEFINE_TYPE (MvsMovieInfo, mvs_movie_info, G_TYPE_OBJECT)
+
+enum {
+ PROP_0,
+ PROP_HAS_STINGERS,
+ PROP_TITLE,
+ PROP_DIRECTOR,
+ PROP_CAST,
+ PROP_RANKING,
+ PROP_RELEASE_DATE,
+ PROP_OVERVIEW,
+ PROP_URL,
+ PROP_SCHEDULE,
+};
+
+#define GET_PRIVATE(o) \
+ (G_TYPE_INSTANCE_GET_PRIVATE ((o), MVS_TYPE_MOVIE_INFO, MvsMovieInfoPrivate))
+
+struct _MvsMovieInfoPrivate {
+ gboolean has_stingers;
+ gchar *title;
+ gchar *director;
+ gchar *cast;
+ gfloat ranking;
+ gchar *release_date;
+ gchar *overview;
+ gchar *url;
+ gchar *schedule;
+};
+
+static void
+mvs_movie_info_get_property (GObject *object, guint property_id,
+ GValue *value, GParamSpec *pspec)
+{
+ MvsMovieInfo *self = MVS_MOVIE_INFO (object);
+
+ switch (property_id) {
+ case PROP_HAS_STINGERS:
+ g_value_set_boolean (value, self->priv->has_stingers);
+ break;
+ case PROP_TITLE:
+ g_value_set_string (value, self->priv->title);
+ break;
+ case PROP_DIRECTOR:
+ g_value_set_string (value, self->priv->director);
+ break;
+ case PROP_CAST:
+ g_value_set_string (value, self->priv->cast);
+ break;
+ case PROP_RANKING:
+ g_value_set_float (value, self->priv->ranking);
+ break;
+ case PROP_RELEASE_DATE:
+ g_value_set_string (value, self->priv->release_date);
+ break;
+ case PROP_OVERVIEW:
+ g_value_set_string (value, self->priv->overview);
+ break;
+ case PROP_URL:
+ g_value_set_string (value, self->priv->url);
+ break;
+ case PROP_SCHEDULE:
+ g_value_set_string (value, self->priv->schedule);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ }
+}
+
+static void
+mvs_movie_info_set_property (GObject *object, guint property_id,
+ const GValue *value, GParamSpec *pspec)
+{
+ MvsMovieInfo *self = MVS_MOVIE_INFO (object);
+ GDate *date = NULL;
+
+ switch (property_id) {
+ case PROP_HAS_STINGERS:
+ mvs_movie_info_set_stingers (self, g_value_get_boolean (value));
+ break;
+ case PROP_TITLE:
+ mvs_movie_info_set_title (self, g_value_get_string (value));
+ break;
+ case PROP_DIRECTOR:
+ mvs_movie_info_set_director (self, g_value_get_string (value));
+ break;
+ case PROP_CAST:
+ mvs_movie_info_set_cast (self, g_value_get_string (value));
+ break;
+ case PROP_RANKING:
+ mvs_movie_info_set_ranking (self, g_value_get_float (value));
+ break;
+ case PROP_RELEASE_DATE:
+ mvs_movie_info_set_release_date (self, g_value_get_string (value));
+ break;
+ case PROP_OVERVIEW:
+ mvs_movie_info_set_overview (self, g_value_get_string (value));
+ break;
+ case PROP_URL:
+ mvs_movie_info_set_url (self, g_value_get_string (value));
+ break;
+ case PROP_SCHEDULE:
+ mvs_movie_info_set_schedule (self, g_value_get_string (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ }
+}
+
+static void
+mvs_movie_info_finalize (GObject *object)
+{
+ MvsMovieInfo *self = MVS_MOVIE_INFO (object);
+
+ g_free (self->priv->cast);
+ g_free (self->priv->director);
+ g_free (self->priv->overview);
+ g_free (self->priv->release_date);
+ g_free (self->priv->schedule);
+ g_free (self->priv->title);
+ g_free (self->priv->url);
+
+ G_OBJECT_CLASS (mvs_movie_info_parent_class)->finalize (object);
+}
+
+static void
+mvs_movie_info_class_init (MvsMovieInfoClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ g_type_class_add_private (klass, sizeof (MvsMovieInfoPrivate));
+
+ object_class->get_property = mvs_movie_info_get_property;
+ object_class->set_property = mvs_movie_info_set_property;
+ object_class->finalize = mvs_movie_info_finalize;
+
+
+ g_object_class_install_property
+ (object_class, PROP_CAST,
+ g_param_spec_string ("cast", "Movie cast", "The movie cast",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property
+ (object_class, PROP_DIRECTOR,
+ g_param_spec_string ("director", "Movie director", "The movie director",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property
+ (object_class, PROP_HAS_STINGERS,
+ g_param_spec_boolean ("stingers", "Has stingers", "The movie has stingers",
+ FALSE,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property
+ (object_class, PROP_OVERVIEW,
+ g_param_spec_string ("overview", "Movie overview", "The movie overview",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property
+ (object_class, PROP_RANKING,
+ g_param_spec_float ("ranking", "Movie ranking", "The movie ranking",
+ 0.0,
+ 10.0,
+ 5.0,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property
+ (object_class, PROP_RELEASE_DATE,
+ g_param_spec_string ("release", "Movie release date", "The movie release date",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property
+ (object_class, PROP_SCHEDULE,
+ g_param_spec_string ("schedule", "Movie schedule", "The movie schedule",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property
+ (object_class, PROP_TITLE,
+ g_param_spec_string ("title", "Movie title", "The movie title",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property
+ (object_class, PROP_URL,
+ g_param_spec_string ("url", "Movie URL", "The movie url",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+}
+
+static void
+mvs_movie_info_init (MvsMovieInfo *self)
+{
+ self->priv = GET_PRIVATE (self);
+ self->priv->cast = NULL;
+ self->priv->director = NULL;
+ self->priv->has_stingers = FALSE;
+ self->priv->overview = NULL;
+ self->priv->ranking = 5;
+ self->priv->release_date = NULL;
+ self->priv->schedule = NULL;
+ self->priv->title = NULL;
+ self->priv->url = NULL;
+}
+
+MvsMovieInfo*
+mvs_movie_info_new (void)
+{
+ return g_object_new (MVS_TYPE_MOVIE_INFO, NULL);
+}
+
+gboolean
+mvs_movie_info_set_stingers (MvsMovieInfo *self, gboolean has_stingers)
+{
+ g_return_val_if_fail (self, FALSE);
+
+ self->priv->has_stingers = has_stingers;
+
+ return TRUE;
+}
+
+gboolean
+mvs_movie_info_set_title (MvsMovieInfo *self, const gchar *title)
+{
+ g_return_val_if_fail (self, FALSE);
+
+ g_free (self->priv->title);
+
+ self->priv->title = g_strdup (title);
+
+ return TRUE;
+}
+
+gboolean
+mvs_movie_info_set_director (MvsMovieInfo *self, const gchar *director)
+{
+ g_return_val_if_fail (self, FALSE);
+
+ g_free (self->priv->director);
+
+ self->priv->director = g_strdup (director);
+
+ return TRUE;
+}
+
+gboolean
+mvs_movie_info_set_cast (MvsMovieInfo *self, const gchar *cast)
+{
+ g_return_val_if_fail (self, FALSE);
+
+ g_free (self->priv->cast);
+
+ self->priv->cast = g_strdup (cast);
+
+ return TRUE;
+}
+
+gboolean
+mvs_movie_info_set_ranking (MvsMovieInfo *self, gfloat ranking)
+{
+ g_return_val_if_fail (self, FALSE);
+ g_return_val_if_fail (ranking < 10 && ranking > 0, FALSE);
+
+ self->priv->ranking = ranking;
+
+ return FALSE;
+}
+
+gboolean
+mvs_movie_info_set_release_date (MvsMovieInfo *self,
+ const gchar *released)
+{
+ g_return_val_if_fail (self, FALSE);
+
+ g_free (self->priv->release_date);
+
+ self->priv->release_date = g_strdup (released);
+
+ return TRUE;
+}
+gboolean
+mvs_movie_info_set_overview (MvsMovieInfo *self,
+ const gchar *overview)
+{
+ g_return_val_if_fail (self, FALSE);
+
+ g_free (self->priv->overview);
+
+ self->priv->overview = g_strdup (overview);
+
+ return TRUE;
+}
+
+gboolean
+mvs_movie_info_set_url (MvsMovieInfo *self, const gchar *url)
+{
+ g_return_val_if_fail (self, FALSE);
+
+ g_free (self->priv->url);
+
+ self->priv->url = g_strdup (url);
+
+ return TRUE;
+}
+
+gboolean
+mvs_movie_info_set_schedule (MvsMovieInfo *self,
+ const gchar *schedule)
+{
+ g_return_val_if_fail (self, FALSE);
+
+ g_free (self->priv->schedule);
+
+ self->priv->schedule = g_strdup (schedule);
+
+ return TRUE;
+}
--- /dev/null
+/*
+ * mvs-movie-info.h
+ *
+ * This file is part of maevies
+ * Copyright (C) 2010 Simón Pena <spenap@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ */
+
+#ifndef _MVS_MOVIE_INFO
+#define _MVS_MOVIE_INFO
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define MVS_TYPE_MOVIE_INFO mvs_movie_info_get_type()
+#define MVS_MOVIE_INFO(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((obj), MVS_TYPE_MOVIE_INFO, MvsMovieInfo))
+#define MVS_MOVIE_INFO_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST ((klass), MVS_TYPE_MOVIE_INFO, MvsMovieInfoClass))
+#define IS_MVS_MOVIE_INFO(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MVS_TYPE_MOVIE_INFO))
+#define IS_MVS_MOVIE_INFO_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE ((klass), MVS_TYPE_MOVIE_INFO))
+#define MVS_MOVIE_INFO_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS ((obj), MVS_TYPE_MOVIE_INFO, MvsMovieInfoClass))
+
+typedef struct _MvsMovieInfoPrivate MvsMovieInfoPrivate;
+
+typedef struct {
+ GObject parent;
+
+ /* <private> */
+ MvsMovieInfoPrivate *priv;
+} MvsMovieInfo;
+
+typedef struct {
+ GObjectClass parent_class;
+} MvsMovieInfoClass;
+
+GType mvs_movie_info_get_type (void);
+MvsMovieInfo* mvs_movie_info_new (void);
+
+gboolean mvs_movie_info_set_stingers (MvsMovieInfo *self,
+ gboolean has_stingers);
+gboolean mvs_movie_info_set_title (MvsMovieInfo *self, const gchar *title);
+gboolean mvs_movie_info_set_director (MvsMovieInfo *self,
+ const gchar *director);
+gboolean mvs_movie_info_set_cast (MvsMovieInfo *self, const gchar *cast);
+gboolean mvs_movie_info_set_ranking (MvsMovieInfo *self, gfloat ranking);
+gboolean mvs_movie_info_set_release_date (MvsMovieInfo *self,
+ const gchar *released);
+gboolean mvs_movie_info_set_overview (MvsMovieInfo *self,
+ const gchar *overview);
+gboolean mvs_movie_info_set_url (MvsMovieInfo *self, const gchar *url);
+gboolean mvs_movie_info_set_schedule (MvsMovieInfo *self,
+ const gchar *schedule);
+
+G_END_DECLS
+
+#endif /* _MVS_MOVIE_INFO */
+++ /dev/null
-/*
- * mvs-info-provider-test.c
- *
- * This file is part of maevies
- * Copyright (C) 2010 Simón Pena <spenap@gmail.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- */
-
-#include <stdio.h>
-#include <glib.h>
-
-#include "mvs-minfo-provider.h"
-#include "mvs-movie-info.h"
-
-static GMainLoop *loop = NULL;
-
-static void
-response_received_callback (MvsMInfoProvider minfo_provider,
- gpointer user_data)
-{
- g_main_loop_quit (loop);
-}
-
-int
-main (int argc, char **argv)
-{
- MvsMInfoProvider *minfo_provider = NULL;
- MvsMovieInfo *movie_info = NULL;
-
- g_type_init ();
-
- g_thread_init (NULL);
-
- minfo_provider = mvs_minfo_provider_new ();
- g_signal_connect (minfo_provider, "response-received",
- G_CALLBACK (response_received_callback), NULL);
-
- movie_info = mvs_movie_info_new ();
- loop = g_main_loop_new (NULL, FALSE);
-
- mvs_minfo_provider_query (minfo_provider, "Zombieland");
-
- g_main_loop_run (loop);
-
- g_object_unref (minfo_provider);
- g_object_unref (movie_info);
- g_main_loop_unref (loop);
-
- return 0;
-}
--- /dev/null
+/*
+ * mvs-info-provider-test.c
+ *
+ * This file is part of maevies
+ * Copyright (C) 2010 Simón Pena <spenap@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ */
+
+#include <stdio.h>
+#include <glib.h>
+
+#include "mvs-minfo-provider.h"
+#include "mvs-movie-info.h"
+
+static GMainLoop *loop = NULL;
+
+static void
+response_received_callback (MvsMInfoProvider minfo_provider,
+ gpointer user_data)
+{
+ g_main_loop_quit (loop);
+}
+
+int
+main (int argc, char **argv)
+{
+ MvsMInfoProvider *minfo_provider = NULL;
+ MvsMovieInfo *movie_info = NULL;
+
+ g_type_init ();
+
+ g_thread_init (NULL);
+
+ minfo_provider = mvs_minfo_provider_new ();
+ g_signal_connect (minfo_provider, "response-received",
+ G_CALLBACK (response_received_callback), NULL);
+
+ movie_info = mvs_movie_info_new ();
+ loop = g_main_loop_new (NULL, FALSE);
+
+ mvs_minfo_provider_query (minfo_provider, "Zombieland");
+
+ g_main_loop_run (loop);
+
+ g_object_unref (minfo_provider);
+ g_object_unref (movie_info);
+ g_main_loop_unref (loop);
+
+ return 0;
+}