[grilo-plugins] vimeo: Use totem-pl-parser to resolve URI
- From: Juan A. Suarez Romero <jasuarez src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [grilo-plugins] vimeo: Use totem-pl-parser to resolve URI
- Date: Fri, 23 Aug 2013 20:10:48 +0000 (UTC)
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]