[grilo-plugins] vimeo: Use totem-pl-parser to resolve URI



commit 00147fa6051afc8f6db2f8b9292858abc686062c
Author: Bastien Nocera <hadess hadess net>
Date:   Mon Jul 8 09:54:56 2013 +0200

    vimeo: Use totem-pl-parser to resolve URI
    
    Instead of libquvi directly.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=703396

 configure.ac       |   10 +++---
 src/vimeo/gvimeo.c |   86 ++++++++++++++--------------------------------------
 2 files changed, 28 insertions(+), 68 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 350c3f4..71911a1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -834,14 +834,14 @@ AC_ARG_ENABLE(vimeo,
                                       if test "x$HAVE_GCRYPT" = "xno"; then
                            AC_MSG_ERROR([libgcrypt not found, install it or use --disable-vimeo])
                         fi
-                        if test "x$HAVE_QUVI" = "xno"; then
-                           AC_MSG_ERROR([libquvi not found, install it or use --disable-vimeo])
+                        if test "x$HAVE_TOTEM_PL_PARSER" = "xno"; then
+                           AC_MSG_ERROR([totem-pl-parser not found, install it or use --disable-vimeo])
                         fi
                         ;;
                 esac
         ],
         [
-                if test "x$HAVE_GRLNET" = "xyes" -a "x$HAVE_XML" = "xyes" -a "x$HAVE_GCRYPT" = "xyes" -a 
"x$HAVE_QUVI" = "xyes"; then
+                if test "x$HAVE_GRLNET" = "xyes" -a "x$HAVE_XML" = "xyes" -a "x$HAVE_GCRYPT" = "xyes" -a 
"x$HAVE_TOTEM_PL_PARSER" = "xyes"; then
                    enable_vimeo=yes
                 else
                    enable_vimeo=no
@@ -859,9 +859,9 @@ VIMEO_PLUGIN_ID="grl-vimeo"
 AC_SUBST(VIMEO_PLUGIN_ID)
 AC_DEFINE_UNQUOTED([VIMEO_PLUGIN_ID], ["$VIMEO_PLUGIN_ID"], [Vimeo plugin ID])
 
-DEPS_VIMEO_CFLAGS="$DEPS_CFLAGS $GRLNET_CFLAGS $XML_CFLAGS $LIBGCRYPT_CFLAGS $QUVI_CFLAGS"
+DEPS_VIMEO_CFLAGS="$DEPS_CFLAGS $GRLNET_CFLAGS $XML_CFLAGS $LIBGCRYPT_CFLAGS $TOTEM_PL_PARSER_CFLAGS"
 AC_SUBST(DEPS_VIMEO_CFLAGS)
-DEPS_VIMEO_LIBS="$DEPS_LIBS $GRLNET_LIBS $XML_LIBS $LIBGCRYPT_LIBS $QUVI_LIBS"
+DEPS_VIMEO_LIBS="$DEPS_LIBS $GRLNET_LIBS $XML_LIBS $LIBGCRYPT_LIBS $TOTEM_PL_PARSER_LIBS"
 AC_SUBST(DEPS_VIMEO_LIBS)
 
 # ----------------------------------------------------------
diff --git a/src/vimeo/gvimeo.c b/src/vimeo/gvimeo.c
index 45f6de2..7a5d0de 100644
--- a/src/vimeo/gvimeo.c
+++ b/src/vimeo/gvimeo.c
@@ -28,7 +28,7 @@
 #include <net/grl-net.h>
 #include <libxml/parser.h>
 #include <libxml/xpath.h>
-#include <quvi/quvi.h>
+#include <totem-pl-parser.h>
 
 #define G_VIMEO_GET_PRIVATE(object)             \
   (G_TYPE_INSTANCE_GET_PRIVATE((object),        \
@@ -58,11 +58,6 @@
   "&per_page=%d"                                               \
   "&query=%s"
 
-enum {
-  PROP_0,
-  PROP_QUVI_FORMAT
-};
-
 typedef struct {
   GVimeo *vimeo;
   GVimeoVideoSearchCb search_cb;
@@ -81,7 +76,6 @@ struct _GVimeoPrivate {
   gchar *auth_token;
   gchar *auth_secret;
   gint per_page;
-  quvi_t quvi_handler;
   GrlNetWc *wc;
 };
 
@@ -105,10 +99,6 @@ static VideoInfo video_info[] = {{SIMPLE, VIMEO_VIDEO_TITLE},
 
 static void g_vimeo_finalize (GObject *object);
 static void g_vimeo_dispose (GObject *object);
-static void g_vimeo_set_property (GObject *object,
-                                  guint propid,
-                                  const GValue *value,
-                                  GParamSpec *spc);
 static gchar * encode_uri (const gchar *uri);
 
 /* -------------------- GOBJECT -------------------- */
@@ -121,31 +111,24 @@ g_vimeo_class_init (GVimeoClass *klass)
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
   gobject_class->finalize = g_vimeo_finalize;
   gobject_class->dispose = g_vimeo_dispose;
-  gobject_class->set_property = g_vimeo_set_property;
-
-  g_object_class_install_property (gobject_class,
-                                   PROP_QUVI_FORMAT,
-                                   g_param_spec_string ("quvi-format",
-                                                        "quvi-format",
-                                                        "URL requested format",
-                                                        NULL,
-                                                        G_PARAM_WRITABLE |
-                                                        G_PARAM_CONSTRUCT_ONLY |
-                                                        G_PARAM_STATIC_NAME));
 
   g_type_class_add_private (klass, sizeof (GVimeoPrivate));
 }
 
 static void
+entry_parsed_cb (TotemPlParser *parser,
+                 const char    *uri,
+                 GHashTable    *metadata,
+                 char         **new_url)
+{
+  *new_url = g_strdup (uri);
+}
+
+static void
 g_vimeo_init (GVimeo *vimeo)
 {
   vimeo->priv = G_VIMEO_GET_PRIVATE (vimeo);
   vimeo->priv->per_page = 50;
-  if (quvi_init (&(vimeo->priv->quvi_handler)) != QUVI_OK) {
-    vimeo->priv->quvi_handler = NULL;
-  } else {
-    quvi_setopt (vimeo->priv->quvi_handler, QUVIOPT_NOVERIFY);
-  }
   vimeo->priv->wc = grl_net_wc_new ();
   g_object_set (vimeo->priv->wc, "user-agent", PLUGIN_USER_AGENT, NULL);
 }
@@ -169,9 +152,6 @@ g_vimeo_finalize (GObject *object)
   GVimeo *vimeo = G_VIMEO (object);
   g_free (vimeo->priv->api_key);
   g_free (vimeo->priv->auth_secret);
-  if (vimeo->priv->quvi_handler) {
-    quvi_close (&(vimeo->priv->quvi_handler));
-  }
 
   G_OBJECT_CLASS (g_vimeo_parent_class)->finalize (object);
 }
@@ -186,23 +166,6 @@ g_vimeo_new (const gchar *api_key, const gchar *auth_secret)
   return vimeo;
 }
 
-static void
-g_vimeo_set_property (GObject *object,
-                      guint propid,
-                      const GValue *value,
-                      GParamSpec *pspec)
-{
-  switch (propid) {
-  case PROP_QUVI_FORMAT:
-    quvi_setopt (G_VIMEO (object)->priv->quvi_handler,
-                 QUVIOPT_FORMAT,
-                 g_value_get_string (value));
-    break;
-  default:
-    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, propid, pspec);
-  }
-}
-
 /* -------------------- PRIVATE API -------------------- */
 
 static gchar *
@@ -427,24 +390,21 @@ search_videos_complete_cb (GObject *source_object,
 static gboolean
 get_video_play_url_cb (GVimeoVideoURLData *url_data)
 {
-  QUVIcode rc;
   gchar *url = NULL;
-  quvi_media_t v;
-
-  if (url_data->vimeo->priv->quvi_handler) {
-    rc = quvi_parse (url_data->vimeo->priv->quvi_handler,
-                     url_data->vimeo_url,
-                     &v);
-    if (rc == QUVI_OK) {
-      rc = quvi_getprop (v, QUVIPROP_MEDIAURL, &url);
-      url_data->callback (url, url_data->user_data);
-      quvi_parse_close (&v);
-    } else {
-      url_data->callback (NULL, url_data->user_data);
-    }
-  } else {
+  TotemPlParser *parser;
+  TotemPlParserResult res;
+
+  parser = totem_pl_parser_new ();
+  g_signal_connect (parser, "entry-parsed",
+                    G_CALLBACK (entry_parsed_cb), &url);
+  res = totem_pl_parser_parse (parser,
+                               url_data->vimeo_url,
+                               FALSE);
+  if (res != TOTEM_PL_PARSER_RESULT_SUCCESS)
     url_data->callback (NULL, url_data->user_data);
-  }
+  else
+    url_data->callback (url, url_data->user_data);
+  g_clear_object (&parser);
 
   g_object_unref (url_data->vimeo);
   g_free (url_data->vimeo_url);


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