summaryrefslogtreecommitdiff
path: root/rest-extras
diff options
context:
space:
mode:
authorCodedOre <25259-CodedOre@users.noreply.gitlab.gnome.org>2022-01-13 11:36:29 +0000
committerCodedOre <25259-CodedOre@users.noreply.gitlab.gnome.org>2022-01-13 11:36:29 +0000
commit7b3285507d2d01acf293223fba275011636aeb07 (patch)
tree7c9a9cb2cca39f01274d7236339962aca7b4972b /rest-extras
parent7e645d051ce4b1ef44482e2f3017e43fd5ebcdaa (diff)
parent85bd00adfa6e06d3426ce7c9007e68e62f51be14 (diff)
downloadlibrest-7b3285507d2d01acf293223fba275011636aeb07.tar.gz
Fix merge conflicts.
Diffstat (limited to 'rest-extras')
-rw-r--r--rest-extras/Makefile.am79
-rw-r--r--rest-extras/flickr-proxy-call.c73
-rw-r--r--rest-extras/flickr-proxy-call.h39
-rw-r--r--rest-extras/flickr-proxy-private.h33
-rw-r--r--rest-extras/flickr-proxy.c174
-rw-r--r--rest-extras/flickr-proxy.h93
-rw-r--r--rest-extras/lastfm-proxy-call.c16
-rw-r--r--rest-extras/lastfm-proxy-call.h6
-rw-r--r--rest-extras/lastfm-proxy-private.h33
-rw-r--r--rest-extras/lastfm-proxy.c132
-rw-r--r--rest-extras/lastfm-proxy.h75
-rw-r--r--rest-extras/meson.build3
-rw-r--r--rest-extras/youtube-proxy.c79
-rw-r--r--rest-extras/youtube-proxy.h68
14 files changed, 357 insertions, 546 deletions
diff --git a/rest-extras/Makefile.am b/rest-extras/Makefile.am
deleted file mode 100644
index c7dd606..0000000
--- a/rest-extras/Makefile.am
+++ /dev/null
@@ -1,79 +0,0 @@
-CLEANFILES =
-
-lib_sources = \
- flickr-proxy.c \
- flickr-proxy-call.c \
- flickr-proxy-private.h \
- lastfm-proxy.c \
- lastfm-proxy-call.c \
- lastfm-proxy-private.h \
- youtube-proxy.c \
- youtube-proxy-private.h
-lib_headers = \
- flickr-proxy.h \
- flickr-proxy-call.h \
- lastfm-proxy.h \
- lastfm-proxy-call.h \
- youtube-proxy.h
-
-
-lib_LTLIBRARIES = librest-extras-@API_VERSION@.la
-librest_extras_@API_VERSION@_la_CFLAGS = $(GLIB_CFLAGS) $(GTHREAD_CFLAGS) \
- $(SOUP_CFLAGS) $(SOUP_GNOME_CFLAGS) \
- $(XML_CFLAGS) $(GCOV_CFLAGS) \
- -I$(top_srcdir) -Wall -DG_LOG_DOMAIN=\"Rest\"
-librest_extras_@API_VERSION@_la_LIBADD = $(GLIB_LIBS) $(GTHREAD_LIBS) \
- $(SOUP_LIBS) $(SOUP_GNOME_LIBS) $(XML_LIBS) \
- $(GCOV_LDFLAGS) \
- $(top_builddir)/rest/librest-@API_VERSION@.la
-librest_extras_@API_VERSION@_la_LDFLAGS = -no-undefined
-librest_extras_@API_VERSION@_la_SOURCES = $(lib_sources) $(lib_headers)
-librest_extras_@API_VERSION@_la_HEADERS = $(lib_headers)
-librest_extras_@API_VERSION@_ladir = $(includedir)/rest-@API_VERSION@/rest-extras
-
-
-# Test suite
-TESTS = test-runner
-check_PROGRAMS = test-runner
-
-test_runner_SOURCES = test-runner.c $(lib_sources) $(lib_headers)
-test_runner_CFLAGS = -DBUILD_TESTS $(librest_extras_@API_VERSION@_la_CFLAGS) $(GCOV_CFLAGS)
-test_runner_LDFLAGS = $(librest_extras_@API_VERSION@_la_LIBADD) $(GCOV_LIBS)
-
-# TODO: use gtester
-
-# intospection
--include $(INTROSPECTION_MAKEFILE)
-
-if HAVE_INTROSPECTION
-INTROSPECTION_GIRS = RestExtras-@API_VERSION@.gir
-
-# need to include ../rest when scanning/compiling
-INTROSPECTION_SCANNER_ARGS = --add-include-path=$(top_builddir)/rest --identifier-prefix=
-INTROSPECTION_COMPILER_ARGS = --includedir=$(top_builddir)/rest
-
-REST_EXTRAS_CINCLUDES=$(patsubst %,--c-include='rest/%',$(shell echo $(lib_headers)))
-INTROSPECTION_SCANNER_ARGS += $(REST_EXTRAS_CINCLUDES)
-
-RestExtras-@API_VERSION@.gir: librest-extras-@API_VERSION@.la Makefile
-
-RestExtras_@API_VERSION_AM@_gir_NAMESPACE = RestExtras
-RestExtras_@API_VERSION_AM@_gir_VERSION = @API_VERSION@
-RestExtras_@API_VERSION_AM@_gir_LIBS = librest-extras-@API_VERSION@.la
-RestExtras_@API_VERSION_AM@_gir_FILES = \
- $(lib_headers) \
- $(filter-out %private.h, $(lib_sources))
-RestExtras_@API_VERSION_AM@_gir_CFLAGS = -I$(top_srcdir)
-RestExtras_@API_VERSION_AM@_gir_INCLUDES = GObject-2.0 libxml2-2.0
-RestExtras_@API_VERSION_AM@_gir_PACKAGES = gobject-2.0 libsoup-2.4 libxml-2.0
-RestExtras_@API_VERSION_AM@_gir_SCANNERFLAGS = --include-uninstalled=$(top_builddir)/rest/Rest-@API_VERSION@.gir --accept-unprefixed --warn-all
-RestExtras_@API_VERSION_AM@_gir_EXPORT_PACKAGES = rest-extras-@API_VERSION@
-
-girdir = $(datadir)/gir-1.0
-dist_gir_DATA = $(INTROSPECTION_GIRS)
-
-typelibsdir = $(libdir)/girepository-1.0/
-typelibs_DATA = $(INTROSPECTION_GIRS:.gir=.typelib)
-
-CLEANFILES += $(dist_gir_DATA) $(typelibs_DATA)
-endif # HAVE_INTROSPECTION
diff --git a/rest-extras/flickr-proxy-call.c b/rest-extras/flickr-proxy-call.c
index e7dfa07..fc38ca0 100644
--- a/rest-extras/flickr-proxy-call.c
+++ b/rest-extras/flickr-proxy-call.c
@@ -4,6 +4,7 @@
*
* Authors: Rob Bradford <rob@linux.intel.com>
* Ross Burton <ross@linux.intel.com>
+ * Günther Wagner <info@gunibert.de>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU Lesser General Public License,
@@ -24,50 +25,57 @@
#include <libsoup/soup.h>
#include <rest/rest-proxy-call.h>
#include "flickr-proxy-call.h"
-#include "flickr-proxy-private.h"
+#include "flickr-proxy.h"
#include "rest/sha1.h"
-G_DEFINE_TYPE (FlickrProxyCall, flickr_proxy_call, REST_TYPE_PROXY_CALL)
-
-#define GET_PRIVATE(o) \
- (G_TYPE_INSTANCE_GET_PRIVATE ((o), FLICKR_TYPE_PROXY_CALL, FlickrProxyCallPrivate))
-
typedef struct {
gboolean upload;
} FlickrProxyCallPrivate;
+G_DEFINE_TYPE_WITH_PRIVATE (FlickrProxyCall, flickr_proxy_call, REST_TYPE_PROXY_CALL)
+
enum {
PROP_0,
- PROP_UPLOAD
+ PROP_UPLOAD,
+ N_PROPS
};
+static GParamSpec *properties [N_PROPS];
+
static void
flickr_proxy_call_set_property (GObject *object,
guint property_id,
const GValue *value,
GParamSpec *pspec)
{
- switch (property_id) {
- case PROP_UPLOAD:
- GET_PRIVATE (object)->upload = g_value_get_boolean (value);
- break;
+ FlickrProxyCall *self = FLICKR_PROXY_CALL (object);
+ FlickrProxyCallPrivate *priv = flickr_proxy_call_get_instance_private (self);
+
+ switch (property_id)
+ {
+ case PROP_UPLOAD:
+ priv->upload = g_value_get_boolean (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- }
+ }
}
static gboolean
-_prepare (RestProxyCall *call, GError **error)
+_prepare (RestProxyCall *call,
+ GError **error)
{
+ FlickrProxyCall *self = (FlickrProxyCall *)call;
+ FlickrProxyCallPrivate *priv = flickr_proxy_call_get_instance_private (self);
+
FlickrProxy *proxy = NULL;
- FlickrProxyPrivate *priv;
+ const gchar *token = NULL;
GHashTable *params;
char *s;
- g_object_get (call, "proxy", &proxy, NULL);
- priv = FLICKR_PROXY_GET_PRIVATE (proxy);
+ g_object_get (self, "proxy", &proxy, NULL);
- if (GET_PRIVATE (call)->upload) {
+ if (priv->upload) {
rest_proxy_bind (REST_PROXY(proxy), "up", "upload");
rest_proxy_call_set_function (call, NULL);
} else {
@@ -79,10 +87,11 @@ _prepare (RestProxyCall *call, GError **error)
rest_proxy_call_set_function (call, NULL);
}
- rest_proxy_call_add_param (call, "api_key", priv->api_key);
+ rest_proxy_call_add_param (call, "api_key", flickr_proxy_get_api_key (proxy));
+ token = flickr_proxy_get_token (proxy);
- if (priv->token)
- rest_proxy_call_add_param (call, "auth_token", priv->token);
+ if (token)
+ rest_proxy_call_add_param (call, "auth_token", token);
/* Get the string params as a hash for signing */
params = rest_params_as_string_hash_table (rest_proxy_call_get_params (call));
@@ -100,14 +109,11 @@ _prepare (RestProxyCall *call, GError **error)
static void
flickr_proxy_call_class_init (FlickrProxyCallClass *klass)
{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
RestProxyCallClass *call_class = REST_PROXY_CALL_CLASS (klass);
- GObjectClass *obj_class = G_OBJECT_CLASS (klass);
- GParamSpec *pspec;
-
- g_type_class_add_private (klass, sizeof (FlickrProxyCallPrivate));
call_class->prepare = _prepare;
- obj_class->set_property = flickr_proxy_call_set_property;
+ object_class->set_property = flickr_proxy_call_set_property;
/**
* FlickrProxyCall:upload:
@@ -115,16 +121,19 @@ flickr_proxy_call_class_init (FlickrProxyCallClass *klass)
* Set if the call should be sent to the photo upload endpoint and not the
* general-purpose endpoint.
*/
- pspec = g_param_spec_boolean ("upload", "upload", "upload",
- FALSE, G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (obj_class, PROP_UPLOAD, pspec);
+ properties [PROP_UPLOAD] =
+ g_param_spec_boolean ("upload",
+ "upload",
+ "upload",
+ FALSE,
+ (G_PARAM_WRITABLE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_properties (object_class, N_PROPS, properties);
}
static void
flickr_proxy_call_init (FlickrProxyCall *self)
{
}
-
-#if BUILD_TESTS
-#warning TODO flickr signature test cases
-#endif
diff --git a/rest-extras/flickr-proxy-call.h b/rest-extras/flickr-proxy-call.h
index 195886e..3903631 100644
--- a/rest-extras/flickr-proxy-call.h
+++ b/rest-extras/flickr-proxy-call.h
@@ -20,49 +20,22 @@
*
*/
-#ifndef _FLICKR_PROXY_CALL
-#define _FLICKR_PROXY_CALL
+#pragma once
#include <rest/rest-proxy-call.h>
G_BEGIN_DECLS
-#define FLICKR_TYPE_PROXY_CALL flickr_proxy_call_get_type()
+#define FLICKR_TYPE_PROXY_CALL (flickr_proxy_call_get_type())
-#define FLICKR_PROXY_CALL(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), FLICKR_TYPE_PROXY_CALL, FlickrProxyCall))
+G_DECLARE_DERIVABLE_TYPE (FlickrProxyCall, flickr_proxy_call, FLICKR, PROXY_CALL, RestProxyCall)
-#define FLICKR_PROXY_CALL_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), FLICKR_TYPE_PROXY_CALL, FlickrProxyCallClass))
-
-#define FLICKR_IS_PROXY_CALL(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FLICKR_TYPE_PROXY_CALL))
-
-#define FLICKR_IS_PROXY_CALL_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), FLICKR_TYPE_PROXY_CALL))
-
-#define FLICKR_PROXY_CALL_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), FLICKR_TYPE_PROXY_CALL, FlickrProxyCallClass))
-
-/**
- * FlickrProxyCall:
- *
- * #FlickrProxyCall has no publicly available members.
- */
-typedef struct {
- RestProxyCall parent;
-} FlickrProxyCall;
-
-typedef struct {
+struct _FlickrProxyCallClass {
RestProxyCallClass parent_class;
+
/*< private >*/
/* padding for future expansion */
gpointer _padding_dummy[8];
-} FlickrProxyCallClass;
-
-GType flickr_proxy_call_get_type (void);
+};
G_END_DECLS
-
-#endif /* _FLICKR_PROXY_CALL */
-
diff --git a/rest-extras/flickr-proxy-private.h b/rest-extras/flickr-proxy-private.h
deleted file mode 100644
index 5932946..0000000
--- a/rest-extras/flickr-proxy-private.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * librest - RESTful web services access
- * Copyright (c) 2008, 2009, Intel Corporation.
- *
- * Authors: Rob Bradford <rob@linux.intel.com>
- * Ross Burton <ross@linux.intel.com>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU Lesser General Public License,
- * version 2.1, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include "flickr-proxy.h"
-
-#define FLICKR_PROXY_GET_PRIVATE(o) \
- (G_TYPE_INSTANCE_GET_PRIVATE ((o), FLICKR_TYPE_PROXY, FlickrProxyPrivate))
-
-struct _FlickrProxyPrivate {
- char *api_key;
- char *shared_secret;
- char *token;
-};
-
diff --git a/rest-extras/flickr-proxy.c b/rest-extras/flickr-proxy.c
index 7726359..7e60fa1 100644
--- a/rest-extras/flickr-proxy.c
+++ b/rest-extras/flickr-proxy.c
@@ -33,18 +33,26 @@
#include <rest/rest-proxy.h>
#include <libsoup/soup.h>
#include "flickr-proxy.h"
-#include "flickr-proxy-private.h"
#include "flickr-proxy-call.h"
-G_DEFINE_TYPE (FlickrProxy, flickr_proxy, REST_TYPE_PROXY)
+typedef struct {
+ char *api_key;
+ char *shared_secret;
+ char *token;
+} FlickrProxyPrivate;
+
+G_DEFINE_TYPE_WITH_PRIVATE (FlickrProxy, flickr_proxy, REST_TYPE_PROXY)
enum {
PROP_0,
PROP_API_KEY,
PROP_SHARED_SECRET,
PROP_TOKEN,
+ N_PROPS
};
+static GParamSpec *properties [N_PROPS];
+
GQuark
flickr_proxy_error_quark (void)
{
@@ -52,22 +60,25 @@ flickr_proxy_error_quark (void)
}
static RestProxyCall *
-_new_call (RestProxy *proxy)
+_new_call (RestProxy *self)
{
RestProxyCall *call;
call = g_object_new (FLICKR_TYPE_PROXY_CALL,
- "proxy", proxy,
+ "proxy", self,
NULL);
return call;
}
static void
-flickr_proxy_get_property (GObject *object, guint property_id,
- GValue *value, GParamSpec *pspec)
+flickr_proxy_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
{
- FlickrProxyPrivate *priv = FLICKR_PROXY_GET_PRIVATE (object);
+ FlickrProxy *self = FLICKR_PROXY (object);
+ FlickrProxyPrivate *priv = flickr_proxy_get_instance_private (self);
switch (property_id) {
case PROP_API_KEY:
@@ -85,10 +96,13 @@ flickr_proxy_get_property (GObject *object, guint property_id,
}
static void
-flickr_proxy_set_property (GObject *object, guint property_id,
- const GValue *value, GParamSpec *pspec)
+flickr_proxy_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
- FlickrProxyPrivate *priv = FLICKR_PROXY_GET_PRIVATE (object);
+ FlickrProxy *self = FLICKR_PROXY (object);
+ FlickrProxyPrivate *priv = flickr_proxy_get_instance_private (self);
switch (property_id) {
case PROP_API_KEY:
@@ -114,27 +128,21 @@ flickr_proxy_set_property (GObject *object, guint property_id,
static void
flickr_proxy_finalize (GObject *object)
{
- FlickrProxyPrivate *priv = FLICKR_PROXY_GET_PRIVATE (object);
+ FlickrProxy *self = FLICKR_PROXY (object);
+ FlickrProxyPrivate *priv = flickr_proxy_get_instance_private (self);
- g_free (priv->api_key);
- g_free (priv->shared_secret);
- g_free (priv->token);
+ g_clear_pointer (&priv->api_key, g_free);
+ g_clear_pointer (&priv->shared_secret, g_free);
+ g_clear_pointer (&priv->token, g_free);
G_OBJECT_CLASS (flickr_proxy_parent_class)->finalize (object);
}
-#ifndef G_PARAM_STATIC_STRINGS
-#define G_PARAM_STATIC_STRINGS (G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)
-#endif
-
static void
flickr_proxy_class_init (FlickrProxyClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
RestProxyClass *proxy_class = REST_PROXY_CLASS (klass);
- GParamSpec *pspec;
-
- g_type_class_add_private (klass, sizeof (FlickrProxyPrivate));
object_class->get_property = flickr_proxy_get_property;
object_class->set_property = flickr_proxy_set_property;
@@ -142,37 +150,43 @@ flickr_proxy_class_init (FlickrProxyClass *klass)
proxy_class->new_call = _new_call;
- pspec = g_param_spec_string ("api-key", "api-key",
- "The API key", NULL,
- G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY|G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class,
- PROP_API_KEY,
- pspec);
-
- pspec = g_param_spec_string ("shared-secret", "shared-secret",
- "The shared secret", NULL,
- G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY|G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class,
- PROP_SHARED_SECRET,
- pspec);
-
- pspec = g_param_spec_string ("token", "token",
- "The request or access token", NULL,
- G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class,
- PROP_TOKEN,
- pspec);
+ properties [PROP_API_KEY] =
+ g_param_spec_string ("api-key",
+ "api-key",
+ "The API key",
+ NULL,
+ (G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
+
+ properties [PROP_SHARED_SECRET] =
+ g_param_spec_string ("shared-secret",
+ "shared-secret",
+ "The shared secret",
+ NULL,
+ (G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
+
+ properties [PROP_TOKEN] =
+ g_param_spec_string ("token",
+ "token",
+ "The request or access token",
+ NULL,
+ (G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_properties (object_class, N_PROPS, properties);
}
static void
flickr_proxy_init (FlickrProxy *self)
{
- self->priv = FLICKR_PROXY_GET_PRIVATE (self);
}
RestProxy *
flickr_proxy_new (const char *api_key,
- const char *shared_secret)
+ const char *shared_secret)
{
return flickr_proxy_new_with_token (api_key,
shared_secret,
@@ -203,9 +217,12 @@ flickr_proxy_new_with_token (const char *api_key,
* freed.
*/
const char *
-flickr_proxy_get_api_key (FlickrProxy *proxy)
+flickr_proxy_get_api_key (FlickrProxy *self)
{
- FlickrProxyPrivate *priv = FLICKR_PROXY_GET_PRIVATE (proxy);
+ FlickrProxyPrivate *priv = flickr_proxy_get_instance_private (self);
+
+ g_return_val_if_fail (FLICKR_IS_PROXY (self), NULL);
+
return priv->api_key;
}
@@ -219,9 +236,12 @@ flickr_proxy_get_api_key (FlickrProxy *proxy)
* freed.
*/
const char *
-flickr_proxy_get_shared_secret (FlickrProxy *proxy)
+flickr_proxy_get_shared_secret (FlickrProxy *self)
{
- FlickrProxyPrivate *priv = FLICKR_PROXY_GET_PRIVATE (proxy);
+ FlickrProxyPrivate *priv = flickr_proxy_get_instance_private (self);
+
+ g_return_val_if_fail (FLICKR_IS_PROXY (self), NULL);
+
return priv->shared_secret;
}
@@ -235,9 +255,12 @@ flickr_proxy_get_shared_secret (FlickrProxy *proxy)
* by #FlickrProxy and should not be freed.
*/
const char *
-flickr_proxy_get_token (FlickrProxy *proxy)
+flickr_proxy_get_token (FlickrProxy *self)
{
- FlickrProxyPrivate *priv = FLICKR_PROXY_GET_PRIVATE (proxy);
+ FlickrProxyPrivate *priv = flickr_proxy_get_instance_private (self);
+
+ g_return_val_if_fail (FLICKR_IS_PROXY (self), NULL);
+
return priv->token;
}
@@ -249,31 +272,36 @@ flickr_proxy_get_token (FlickrProxy *proxy)
* Set the token.
*/
void
-flickr_proxy_set_token (FlickrProxy *proxy, const char *token)
+flickr_proxy_set_token (FlickrProxy *self,
+ const char *token)
{
FlickrProxyPrivate *priv;
- g_return_if_fail (FLICKR_IS_PROXY (proxy));
- priv = FLICKR_PROXY_GET_PRIVATE (proxy);
+ g_return_if_fail (FLICKR_IS_PROXY (self));
- if (priv->token)
- g_free (priv->token);
+ priv = flickr_proxy_get_instance_private (self);
- priv->token = g_strdup (token);
+ if (g_strcmp0 (priv->token, token) != 0)
+ {
+ g_clear_pointer (&priv->token, g_free);
+ priv->token = g_strdup (token);
+ g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_TOKEN]);
+ }
}
char *
-flickr_proxy_sign (FlickrProxy *proxy, GHashTable *params)
+flickr_proxy_sign (FlickrProxy *self,
+ GHashTable *params)
{
FlickrProxyPrivate *priv;
GList *keys;
char *md5;
GChecksum *checksum;
- g_return_val_if_fail (FLICKR_IS_PROXY (proxy), NULL);
+ g_return_val_if_fail (FLICKR_IS_PROXY (self), NULL);
g_return_val_if_fail (params, NULL);
- priv = FLICKR_PROXY_GET_PRIVATE (proxy);
+ priv = flickr_proxy_get_instance_private (self);
checksum = g_checksum_new (G_CHECKSUM_MD5);
g_checksum_update (checksum, (guchar *)priv->shared_secret, -1);
@@ -300,26 +328,29 @@ flickr_proxy_sign (FlickrProxy *proxy, GHashTable *params)
}
char *
-flickr_proxy_build_login_url (FlickrProxy *proxy,
+flickr_proxy_build_login_url (FlickrProxy *self,
const char *frob,
const char *perms)
{
+ FlickrProxyPrivate *priv;
GUri *uri;
GHashTable *params;
char *sig, *s;
char *query;
- g_return_val_if_fail (FLICKR_IS_PROXY (proxy), NULL);
+ g_return_val_if_fail (FLICKR_IS_PROXY (self), NULL);
+
+ priv = flickr_proxy_get_instance_private (self);
params = g_hash_table_new (g_str_hash, g_str_equal);
- g_hash_table_insert (params, "api_key", proxy->priv->api_key);
+ g_hash_table_insert (params, "api_key", priv->api_key);
g_hash_table_insert (params, "perms", (gpointer)perms);
if (frob)
g_hash_table_insert (params, "frob", (gpointer)frob);
- sig = flickr_proxy_sign (proxy, params);
+ sig = flickr_proxy_sign (self, params);
g_hash_table_insert (params, "api_sig", sig);
query = soup_form_encode_hash (params);
@@ -328,7 +359,7 @@ flickr_proxy_build_login_url (FlickrProxy *proxy,
NULL,
"flickr.com",
-1,
- "services/auth/",
+ "/services/auth/",
query,
NULL);
@@ -353,7 +384,8 @@ flickr_proxy_build_login_url (FlickrProxy *proxy,
* Returns: %TRUE if this response is successful, %FALSE otherwise.
*/
gboolean
-flickr_proxy_is_successful (RestXmlNode *root, GError **error)
+flickr_proxy_is_successful (RestXmlNode *root,
+ GError **error)
{
RestXmlNode *node;
@@ -389,12 +421,12 @@ flickr_proxy_is_successful (RestXmlNode *root, GError **error)
* Returns: (type FlickrProxyCall) (transfer full): a new #FlickrProxyCall
*/
RestProxyCall *
-flickr_proxy_new_upload (FlickrProxy *proxy)
+flickr_proxy_new_upload (FlickrProxy *self)
{
- g_return_val_if_fail (FLICKR_IS_PROXY (proxy), NULL);
+ g_return_val_if_fail (FLICKR_IS_PROXY (self), NULL);
return g_object_new (FLICKR_TYPE_PROXY_CALL,
- "proxy", proxy,
+ "proxy", self,
"upload", TRUE,
NULL);
}
@@ -417,7 +449,9 @@ flickr_proxy_new_upload (FlickrProxy *proxy)
* Returns: (type FlickrProxyCall) (transfer full): a new #FlickrProxyCall
*/
RestProxyCall *
-flickr_proxy_new_upload_for_file (FlickrProxy *proxy, const char *filename, GError **error)
+flickr_proxy_new_upload_for_file (FlickrProxy *self,
+ const char *filename,
+ GError **error)
{
GMappedFile *map;
GError *err = NULL;
@@ -425,7 +459,7 @@ flickr_proxy_new_upload_for_file (FlickrProxy *proxy, const char *filename, GErr
RestParam *param;
RestProxyCall *call = NULL;
- g_return_val_if_fail (FLICKR_IS_PROXY (proxy), NULL);
+ g_return_val_if_fail (FLICKR_IS_PROXY (self), NULL);
g_return_val_if_fail (filename, NULL);
/* Open the file */
@@ -443,7 +477,7 @@ flickr_proxy_new_upload_for_file (FlickrProxy *proxy, const char *filename, GErr
NULL);
/* Make the call */
- call = flickr_proxy_new_upload (proxy);
+ call = flickr_proxy_new_upload (self);
param = rest_param_new_with_owner ("photo",
g_mapped_file_get_contents (map),
g_mapped_file_get_length (map),
diff --git a/rest-extras/flickr-proxy.h b/rest-extras/flickr-proxy.h
index 5cff622..bc13149 100644
--- a/rest-extras/flickr-proxy.h
+++ b/rest-extras/flickr-proxy.h
@@ -4,6 +4,7 @@
*
* Authors: Rob Bradford <rob@linux.intel.com>
* Ross Burton <ross@linux.intel.com>
+ * Günther Wagner <info@gunibert.de>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU Lesser General Public License,
@@ -20,81 +21,47 @@
*
*/
-#ifndef _FLICKR_PROXY
-#define _FLICKR_PROXY
+#pragma once
#include <rest/rest-proxy.h>
#include <rest/rest-xml-parser.h>
G_BEGIN_DECLS
+#define FLICKR_PROXY_ERROR flickr_proxy_error_quark()
#define FLICKR_TYPE_PROXY flickr_proxy_get_type()
-#define FLICKR_PROXY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), FLICKR_TYPE_PROXY, FlickrProxy))
-
-#define FLICKR_PROXY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), FLICKR_TYPE_PROXY, FlickrProxyClass))
-
-#define FLICKR_IS_PROXY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FLICKR_TYPE_PROXY))
-
-#define FLICKR_IS_PROXY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), FLICKR_TYPE_PROXY))
+G_DECLARE_DERIVABLE_TYPE (FlickrProxy, flickr_proxy, FLICKR, PROXY, RestProxy)
-#define FLICKR_PROXY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), FLICKR_TYPE_PROXY, FlickrProxyClass))
-
-typedef struct _FlickrProxyPrivate FlickrProxyPrivate;
-
-/**
- * FlickrProxy:
- *
- * #FlickrProxy has no publicly available members.
- */
-typedef struct {
- RestProxy parent;
- FlickrProxyPrivate *priv;
-} FlickrProxy;
-
-typedef struct {
+struct _FlickrProxyClass {
RestProxyClass parent_class;
+
/*< private >*/
/* padding for future expansion */
gpointer _padding_dummy[8];
-} FlickrProxyClass;
-
-#define FLICKR_PROXY_ERROR flickr_proxy_error_quark()
-
-GType flickr_proxy_get_type (void);
-
-RestProxy* flickr_proxy_new (const char *api_key,
- const char *shared_secret);
-
-RestProxy* flickr_proxy_new_with_token (const char *api_key,
- const char *shared_secret,
- const char *token);
-
-const char * flickr_proxy_get_api_key (FlickrProxy *proxy);
-
-const char * flickr_proxy_get_shared_secret (FlickrProxy *proxy);
-
-const char * flickr_proxy_get_token (FlickrProxy *proxy);
-
-void flickr_proxy_set_token (FlickrProxy *proxy, const char *token);
-
-char * flickr_proxy_sign (FlickrProxy *proxy, GHashTable *params);
-
-char * flickr_proxy_build_login_url (FlickrProxy *proxy,
- const char *frob,
- const char *perms);
-
-gboolean flickr_proxy_is_successful (RestXmlNode *root, GError **error);
-
-RestProxyCall * flickr_proxy_new_upload (FlickrProxy *proxy);
-
-RestProxyCall * flickr_proxy_new_upload_for_file (FlickrProxy *proxy, const char *filename, GError **error);
+};
+
+
+RestProxy *flickr_proxy_new (const char *api_key,
+ const char *shared_secret);
+RestProxy *flickr_proxy_new_with_token (const char *api_key,
+ const char *shared_secret,
+ const char *token);
+const char *flickr_proxy_get_api_key (FlickrProxy *proxy);
+const char *flickr_proxy_get_shared_secret (FlickrProxy *proxy);
+const char *flickr_proxy_get_token (FlickrProxy *proxy);
+void flickr_proxy_set_token (FlickrProxy *proxy,
+ const char *token);
+char *flickr_proxy_sign (FlickrProxy *proxy,
+ GHashTable *params);
+char *flickr_proxy_build_login_url (FlickrProxy *proxy,
+ const char *frob,
+ const char *perms);
+gboolean flickr_proxy_is_successful (RestXmlNode *root,
+ GError **error);
+RestProxyCall *flickr_proxy_new_upload (FlickrProxy *proxy);
+RestProxyCall *flickr_proxy_new_upload_for_file (FlickrProxy *proxy,
+ const char *filename,
+ GError **error);
G_END_DECLS
-
-#endif /* _FLICKR_PROXY */
diff --git a/rest-extras/lastfm-proxy-call.c b/rest-extras/lastfm-proxy-call.c
index 417fa18..dd56715 100644
--- a/rest-extras/lastfm-proxy-call.c
+++ b/rest-extras/lastfm-proxy-call.c
@@ -25,7 +25,7 @@
#include <rest/rest-private.h>
#include <rest/rest-proxy-call.h>
#include "lastfm-proxy-call.h"
-#include "lastfm-proxy-private.h"
+#include "lastfm-proxy.h"
#include "rest/sha1.h"
G_DEFINE_TYPE (LastfmProxyCall, lastfm_proxy_call, REST_TYPE_PROXY_CALL)
@@ -34,23 +34,23 @@ static gboolean
_prepare (RestProxyCall *call, GError **error)
{
LastfmProxy *proxy = NULL;
- LastfmProxyPrivate *priv;
GHashTable *params;
+ const gchar *session_key;
char *s;
g_object_get (call, "proxy", &proxy, NULL);
- priv = LASTFM_PROXY_GET_PRIVATE (proxy);
rest_proxy_call_add_params (call,
"method", rest_proxy_call_get_function (call),
- "api_key", priv->api_key,
+ "api_key", lastfm_proxy_get_api_key (proxy),
NULL);
/* Reset function because Lastfm puts the function in the parameters */
rest_proxy_call_set_function (call, NULL);
- if (priv->session_key)
- rest_proxy_call_add_param (call, "sk", priv->session_key);
+ session_key = lastfm_proxy_get_session_key (proxy);
+ if (session_key)
+ rest_proxy_call_add_param (call, "sk", session_key);
params = rest_params_as_string_hash_table (rest_proxy_call_get_params (call));
s = lastfm_proxy_sign (proxy, params);
@@ -75,7 +75,3 @@ static void
lastfm_proxy_call_init (LastfmProxyCall *self)
{
}
-
-#if BUILD_TESTS
-#warning TODO lastfm signature test cases
-#endif
diff --git a/rest-extras/lastfm-proxy-call.h b/rest-extras/lastfm-proxy-call.h
index da4c7ad..20e9b8e 100644
--- a/rest-extras/lastfm-proxy-call.h
+++ b/rest-extras/lastfm-proxy-call.h
@@ -20,8 +20,7 @@
*
*/
-#ifndef _LASTFM_PROXY_CALL
-#define _LASTFM_PROXY_CALL
+#pragma once
#include <rest/rest-proxy-call.h>
@@ -44,6 +43,3 @@ struct _LastfmProxyCallClass {
};
G_END_DECLS
-
-#endif /* _LASTFM_PROXY_CALL */
-
diff --git a/rest-extras/lastfm-proxy-private.h b/rest-extras/lastfm-proxy-private.h
deleted file mode 100644
index 128f7a9..0000000
--- a/rest-extras/lastfm-proxy-private.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * librest - RESTful web services access
- * Copyright (c) 2010 Intel Corporation.
- *
- * Authors: Rob Bradford <rob@linux.intel.com>
- * Ross Burton <ross@linux.intel.com>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU Lesser General Public License,
- * version 2.1, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include "lastfm-proxy.h"
-
-#define LASTFM_PROXY_GET_PRIVATE(o) \
- (G_TYPE_INSTANCE_GET_PRIVATE ((o), LASTFM_TYPE_PROXY, LastfmProxyPrivate))
-
-struct _LastfmProxyPrivate {
- char *api_key;
- char *secret;
- char *session_key;
-};
-
diff --git a/rest-extras/lastfm-proxy.c b/rest-extras/lastfm-proxy.c
index b9fc713..7b0dd28 100644
--- a/rest-extras/lastfm-proxy.c
+++ b/rest-extras/lastfm-proxy.c
@@ -26,18 +26,26 @@
#include <rest/rest-proxy.h>
#include <libsoup/soup.h>
#include "lastfm-proxy.h"
-#include "lastfm-proxy-private.h"
#include "lastfm-proxy-call.h"
-G_DEFINE_TYPE (LastfmProxy, lastfm_proxy, REST_TYPE_PROXY)
+typedef struct {
+ char *api_key;
+ char *secret;
+ char *session_key;
+} LastfmProxyPrivate;
+
+G_DEFINE_TYPE_WITH_PRIVATE (LastfmProxy, lastfm_proxy, REST_TYPE_PROXY)
enum {
PROP_0,
PROP_API_KEY,
PROP_SECRET,
PROP_SESSION_KEY,
+ N_PROPS,
};
+static GParamSpec *properties [N_PROPS];
+
GQuark
lastfm_proxy_error_quark (void)
{
@@ -57,10 +65,13 @@ _new_call (RestProxy *proxy)
}
static void
-lastfm_proxy_get_property (GObject *object, guint property_id,
- GValue *value, GParamSpec *pspec)
+lastfm_proxy_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
{
- LastfmProxyPrivate *priv = LASTFM_PROXY_GET_PRIVATE (object);
+ LastfmProxy *self = LASTFM_PROXY (object);
+ LastfmProxyPrivate *priv = lastfm_proxy_get_instance_private (self);
switch (property_id) {
case PROP_API_KEY:
@@ -81,7 +92,8 @@ static void
lastfm_proxy_set_property (GObject *object, guint property_id,
const GValue *value, GParamSpec *pspec)
{
- LastfmProxyPrivate *priv = LASTFM_PROXY_GET_PRIVATE (object);
+ LastfmProxy *self = LASTFM_PROXY (object);
+ LastfmProxyPrivate *priv = lastfm_proxy_get_instance_private (self);
switch (property_id) {
case PROP_API_KEY:
@@ -107,7 +119,8 @@ lastfm_proxy_set_property (GObject *object, guint property_id,
static void
lastfm_proxy_finalize (GObject *object)
{
- LastfmProxyPrivate *priv = LASTFM_PROXY_GET_PRIVATE (object);
+ LastfmProxy *self = LASTFM_PROXY (object);
+ LastfmProxyPrivate *priv = lastfm_proxy_get_instance_private (self);
g_free (priv->api_key);
g_free (priv->secret);
@@ -116,18 +129,11 @@ lastfm_proxy_finalize (GObject *object)
G_OBJECT_CLASS (lastfm_proxy_parent_class)->finalize (object);
}
-#ifndef G_PARAM_STATIC_STRINGS
-#define G_PARAM_STATIC_STRINGS (G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)
-#endif
-
static void
lastfm_proxy_class_init (LastfmProxyClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
RestProxyClass *proxy_class = REST_PROXY_CLASS (klass);
- GParamSpec *pspec;
-
- g_type_class_add_private (klass, sizeof (LastfmProxyPrivate));
object_class->get_property = lastfm_proxy_get_property;
object_class->set_property = lastfm_proxy_set_property;
@@ -135,32 +141,38 @@ lastfm_proxy_class_init (LastfmProxyClass *klass)
proxy_class->new_call = _new_call;
- pspec = g_param_spec_string ("api-key", "api-key",
- "The API key", NULL,
- G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY|G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class,
- PROP_API_KEY,
- pspec);
-
- pspec = g_param_spec_string ("secret", "secret",
- "The API key secret", NULL,
- G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY|G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class,
- PROP_SECRET,
- pspec);
-
- pspec = g_param_spec_string ("session-key", "session-key",
- "The session key", NULL,
- G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class,
- PROP_SESSION_KEY,
- pspec);
+ properties [PROP_API_KEY] =
+ g_param_spec_string ("api-key",
+ "api-key",
+ "The API key",
+ NULL,
+ (G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
+
+ properties [PROP_SECRET] =
+ g_param_spec_string ("secret",
+ "secret",
+ "The API key secret",
+ NULL,
+ (G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
+
+ properties [PROP_SESSION_KEY] =
+ g_param_spec_string ("session-key",
+ "session-key",
+ "The session key",
+ NULL,
+ (G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_properties (object_class, N_PROPS, properties);
}
static void
lastfm_proxy_init (LastfmProxy *self)
{
- self->priv = LASTFM_PROXY_GET_PRIVATE (self);
}
RestProxy *
@@ -196,9 +208,12 @@ lastfm_proxy_new_with_session (const char *api_key,
* freed.
*/
const char *
-lastfm_proxy_get_api_key (LastfmProxy *proxy)
+lastfm_proxy_get_api_key (LastfmProxy *self)
{
- LastfmProxyPrivate *priv = LASTFM_PROXY_GET_PRIVATE (proxy);
+ LastfmProxyPrivate *priv = lastfm_proxy_get_instance_private (self);
+
+ g_return_val_if_fail (LASTFM_IS_PROXY (self), NULL);
+
return priv->api_key;
}
@@ -212,9 +227,12 @@ lastfm_proxy_get_api_key (LastfmProxy *proxy)
* freed.
*/
const char *
-lastfm_proxy_get_secret (LastfmProxy *proxy)
+lastfm_proxy_get_secret (LastfmProxy *self)
{
- LastfmProxyPrivate *priv = LASTFM_PROXY_GET_PRIVATE (proxy);
+ LastfmProxyPrivate *priv = lastfm_proxy_get_instance_private (self);
+
+ g_return_val_if_fail (LASTFM_IS_PROXY (self), NULL);
+
return priv->secret;
}
@@ -228,9 +246,12 @@ lastfm_proxy_get_secret (LastfmProxy *proxy)
* by #LastfmProxy and should not be freed.
*/
const char *
-lastfm_proxy_get_session_key (LastfmProxy *proxy)
+lastfm_proxy_get_session_key (LastfmProxy *self)
{
- LastfmProxyPrivate *priv = LASTFM_PROXY_GET_PRIVATE (proxy);
+ LastfmProxyPrivate *priv = lastfm_proxy_get_instance_private (self);
+
+ g_return_val_if_fail (LASTFM_IS_PROXY (self), NULL);
+
return priv->session_key;
}
@@ -242,12 +263,14 @@ lastfm_proxy_get_session_key (LastfmProxy *proxy)
* Set the session key.
*/
void
-lastfm_proxy_set_session_key (LastfmProxy *proxy, const char *session_key)
+lastfm_proxy_set_session_key (LastfmProxy *self,
+ const char *session_key)
{
LastfmProxyPrivate *priv;
- g_return_if_fail (LASTFM_IS_PROXY (proxy));
- priv = LASTFM_PROXY_GET_PRIVATE (proxy);
+ g_return_if_fail (LASTFM_IS_PROXY (self));
+
+ priv = lastfm_proxy_get_instance_private (self);
if (priv->session_key)
g_free (priv->session_key);
@@ -256,17 +279,18 @@ lastfm_proxy_set_session_key (LastfmProxy *proxy, const char *session_key)
}
char *
-lastfm_proxy_sign (LastfmProxy *proxy, GHashTable *params)
+lastfm_proxy_sign (LastfmProxy *self,
+ GHashTable *params)
{
LastfmProxyPrivate *priv;
GString *s;
GList *keys;
char *md5;
- g_return_val_if_fail (LASTFM_IS_PROXY (proxy), NULL);
+ g_return_val_if_fail (LASTFM_IS_PROXY (self), NULL);
g_return_val_if_fail (params, NULL);
- priv = LASTFM_PROXY_GET_PRIVATE (proxy);
+ priv = lastfm_proxy_get_instance_private (self);
s = g_string_new (NULL);
@@ -295,13 +319,18 @@ lastfm_proxy_sign (LastfmProxy *proxy, GHashTable *params)
}
char *
-lastfm_proxy_build_login_url (LastfmProxy *proxy, const char *token)
+lastfm_proxy_build_login_url (LastfmProxy *self,
+ const char *token)
{
- g_return_val_if_fail (LASTFM_IS_PROXY (proxy), NULL);
+ LastfmProxyPrivate *priv;
+
+ g_return_val_if_fail (LASTFM_IS_PROXY (self), NULL);
g_return_val_if_fail (token, NULL);
+ priv = lastfm_proxy_get_instance_private (self);
+
return g_strdup_printf ("http://www.last.fm/api/auth/?api_key=%s&token=%s",
- proxy->priv->api_key,
+ priv->api_key,
token);
}
@@ -316,7 +345,8 @@ lastfm_proxy_build_login_url (LastfmProxy *proxy, const char *token)
* Returns: %TRUE if this response is successful, %FALSE otherwise.
*/
gboolean
-lastfm_proxy_is_successful (RestXmlNode *root, GError **error)
+lastfm_proxy_is_successful (RestXmlNode *root,
+ GError **error)
{
RestXmlNode *node;
diff --git a/rest-extras/lastfm-proxy.h b/rest-extras/lastfm-proxy.h
index 85e612a..b378882 100644
--- a/rest-extras/lastfm-proxy.h
+++ b/rest-extras/lastfm-proxy.h
@@ -20,8 +20,7 @@
*
*/
-#ifndef _LASTFM_PROXY
-#define _LASTFM_PROXY
+#pragma once
#include <rest/rest-proxy.h>
#include <rest/rest-xml-parser.h>
@@ -30,65 +29,33 @@ G_BEGIN_DECLS
#define LASTFM_TYPE_PROXY lastfm_proxy_get_type()
-#define LASTFM_PROXY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), LASTFM_TYPE_PROXY, LastfmProxy))
+G_DECLARE_DERIVABLE_TYPE (LastfmProxy, lastfm_proxy, LASTFM, PROXY, RestProxy)
-#define LASTFM_PROXY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), LASTFM_TYPE_PROXY, LastfmProxyClass))
-
-#define LASTFM_IS_PROXY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LASTFM_TYPE_PROXY))
-
-#define LASTFM_IS_PROXY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), LASTFM_TYPE_PROXY))
-
-#define LASTFM_PROXY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), LASTFM_TYPE_PROXY, LastfmProxyClass))
-
-typedef struct _LastfmProxyPrivate LastfmProxyPrivate;
-
-/**
- * LastfmProxy:
- *
- * #LastfmProxy has no publicly available members.
- */
-typedef struct {
- RestProxy parent;
- LastfmProxyPrivate *priv;
-} LastfmProxy;
-
-typedef struct {
+struct _LastfmProxyClass {
RestProxyClass parent_class;
+
/*< private >*/
/* padding for future expansion */
gpointer _padding_dummy[8];
-} LastfmProxyClass;
+};
#define LASTFM_PROXY_ERROR lastfm_proxy_error_quark()
-GType lastfm_proxy_get_type (void);
-
-RestProxy* lastfm_proxy_new (const char *api_key,
- const char *secret);
-
-RestProxy* lastfm_proxy_new_with_session (const char *api_key,
- const char *secret,
- const char *session_key);
-
-const char * lastfm_proxy_get_api_key (LastfmProxy *proxy);
-
-const char * lastfm_proxy_get_secret (LastfmProxy *proxy);
-
-const char * lastfm_proxy_get_session_key (LastfmProxy *proxy);
-
-void lastfm_proxy_set_session_key (LastfmProxy *proxy, const char *session_key);
-
-char * lastfm_proxy_sign (LastfmProxy *proxy, GHashTable *params);
-
-char * lastfm_proxy_build_login_url (LastfmProxy *proxy, const char *token);
-
-gboolean lastfm_proxy_is_successful (RestXmlNode *root, GError **error);
+RestProxy *lastfm_proxy_new (const char *api_key,
+ const char *secret);
+RestProxy *lastfm_proxy_new_with_session (const char *api_key,
+ const char *secret,
+ const char *session_key);
+const char *lastfm_proxy_get_api_key (LastfmProxy *proxy);
+const char *lastfm_proxy_get_secret (LastfmProxy *proxy);
+const char *lastfm_proxy_get_session_key (LastfmProxy *proxy);
+void lastfm_proxy_set_session_key (LastfmProxy *proxy,
+ const char *session_key);
+char *lastfm_proxy_sign (LastfmProxy *proxy,
+ GHashTable *params);
+char *lastfm_proxy_build_login_url (LastfmProxy *proxy,
+ const char *token);
+gboolean lastfm_proxy_is_successful (RestXmlNode *root,
+ GError **error);
G_END_DECLS
-
-#endif /* _LASTFM_PROXY */
diff --git a/rest-extras/meson.build b/rest-extras/meson.build
index 241bc73..159676b 100644
--- a/rest-extras/meson.build
+++ b/rest-extras/meson.build
@@ -49,9 +49,12 @@ if get_option('introspection')
librest_extras_gir = gnome.generate_gir(librest_extras_lib,
sources: librest_extras_sources + librest_extras_headers,
namespace: 'RestExtras',
+ symbol_prefix: 'rest_extras',
+ identifier_prefix: 'RestExtras',
nsversion: librest_api_version,
includes: [ 'GObject-2.0', 'Gio-2.0', 'Soup-@0@'.format(libsoup_api_version), librest_gir[0] ],
extra_args: [ '--accept-unprefixed' ],
+ dependencies: librest_extras_deps,
install: true,
)
diff --git a/rest-extras/youtube-proxy.c b/rest-extras/youtube-proxy.c
index cd598f4..08faca4 100644
--- a/rest-extras/youtube-proxy.c
+++ b/rest-extras/youtube-proxy.c
@@ -29,9 +29,13 @@
#include "rest/rest-private.h"
#include "youtube-proxy.h"
-#include "youtube-proxy-private.h"
-G_DEFINE_TYPE (YoutubeProxy, youtube_proxy, REST_TYPE_PROXY)
+typedef struct {
+ char *developer_key;
+ char *user_auth;
+} YoutubeProxyPrivate;
+
+G_DEFINE_TYPE_WITH_PRIVATE (YoutubeProxy, youtube_proxy, REST_TYPE_PROXY)
#define UPLOAD_URL \
"http://uploads.gdata.youtube.com/feeds/api/users/default/uploads"
@@ -40,8 +44,11 @@ enum {
PROP_0,
PROP_DEVELOPER_KEY,
PROP_USER_AUTH,
+ N_PROPS,
};
+static GParamSpec *properties [N_PROPS];
+
GQuark
youtube_proxy_error_quark (void)
{
@@ -49,10 +56,13 @@ youtube_proxy_error_quark (void)
}
static void
-youtube_proxy_get_property (GObject *object, guint property_id,
- GValue *value, GParamSpec *pspec)
+youtube_proxy_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
{
- YoutubeProxyPrivate *priv = YOUTUBE_PROXY_GET_PRIVATE (object);
+ YoutubeProxy *self = YOUTUBE_PROXY (object);
+ YoutubeProxyPrivate *priv = youtube_proxy_get_instance_private (self);
switch (property_id) {
case PROP_DEVELOPER_KEY:
@@ -67,10 +77,13 @@ youtube_proxy_get_property (GObject *object, guint property_id,
}
static void
-youtube_proxy_set_property (GObject *object, guint property_id,
- const GValue *value, GParamSpec *pspec)
+youtube_proxy_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
- YoutubeProxyPrivate *priv = YOUTUBE_PROXY_GET_PRIVATE (object);
+ YoutubeProxy *self = YOUTUBE_PROXY (object);
+ YoutubeProxyPrivate *priv = youtube_proxy_get_instance_private (self);
switch (property_id) {
case PROP_DEVELOPER_KEY:
@@ -89,7 +102,8 @@ youtube_proxy_set_property (GObject *object, guint property_id,
static void
youtube_proxy_finalize (GObject *object)
{
- YoutubeProxyPrivate *priv = YOUTUBE_PROXY_GET_PRIVATE (object);
+ YoutubeProxy *self = YOUTUBE_PROXY (object);
+ YoutubeProxyPrivate *priv = youtube_proxy_get_instance_private (self);
g_free (priv->developer_key);
g_free (priv->user_auth);
@@ -101,36 +115,34 @@ static void
youtube_proxy_class_init (YoutubeProxyClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- GParamSpec *pspec;
-
- g_type_class_add_private (klass, sizeof (YoutubeProxyPrivate));
object_class->get_property = youtube_proxy_get_property;
object_class->set_property = youtube_proxy_set_property;
object_class->finalize = youtube_proxy_finalize;
- pspec = g_param_spec_string ("developer-key", "developer-key",
- "The developer API key", NULL,
- G_PARAM_READWRITE|
- G_PARAM_CONSTRUCT_ONLY|
- G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class,
- PROP_DEVELOPER_KEY,
- pspec);
-
- pspec = g_param_spec_string ("user-auth", "user-auth",
- "The ClientLogin token", NULL,
- G_PARAM_READWRITE|
- G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class,
- PROP_USER_AUTH,
- pspec);
+ properties [PROP_DEVELOPER_KEY] =
+ g_param_spec_string ("developer-key",
+ "developer-key",
+ "The developer API key",
+ NULL,
+ (G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
+
+ properties [PROP_USER_AUTH] =
+ g_param_spec_string ("user-auth",
+ "user-auth",
+ "The ClientLogin token",
+ NULL,
+ (G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_properties (object_class, N_PROPS, properties);
}
static void
youtube_proxy_init (YoutubeProxy *self)
{
- self->priv = YOUTUBE_PROXY_GET_PRIVATE (self);
}
RestProxy *
@@ -151,16 +163,17 @@ youtube_proxy_new_with_auth (const char *developer_key,
}
void
-youtube_proxy_set_user_auth (YoutubeProxy *proxy,
+youtube_proxy_set_user_auth (YoutubeProxy *self,
const gchar *user_auth)
{
- YoutubeProxyPrivate *priv = proxy->priv;
+ YoutubeProxyPrivate *priv = youtube_proxy_get_instance_private (self);
priv->user_auth = g_strdup (user_auth);
}
static gchar *
-_construct_upload_atom_xml (GHashTable *fields, gboolean incomplete)
+_construct_upload_atom_xml (GHashTable *fields,
+ gboolean incomplete)
{
GHashTableIter iter;
gpointer key, value;
@@ -215,7 +228,7 @@ _set_upload_headers (YoutubeProxy *self,
SoupMessageHeaders *headers,
const gchar *filename)
{
- YoutubeProxyPrivate *priv = self->priv;
+ YoutubeProxyPrivate *priv = youtube_proxy_get_instance_private (self);
gchar *user_auth_header;
gchar *devkey_header;
gchar *basename;
diff --git a/rest-extras/youtube-proxy.h b/rest-extras/youtube-proxy.h
index 1fe6c20..1215cf4 100644
--- a/rest-extras/youtube-proxy.h
+++ b/rest-extras/youtube-proxy.h
@@ -20,8 +20,7 @@
*
*/
-#ifndef _YOUTUBE_PROXY
-#define _YOUTUBE_PROXY
+#pragma once
#include <rest/rest-proxy.h>
@@ -29,52 +28,18 @@ G_BEGIN_DECLS
#define YOUTUBE_TYPE_PROXY youtube_proxy_get_type()
-#define YOUTUBE_PROXY(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), YOUTUBE_TYPE_PROXY, YoutubeProxy))
+G_DECLARE_DERIVABLE_TYPE (YoutubeProxy, youtube_proxy, YOUTUBE, PROXY, RestProxy)
-#define YOUTUBE_PROXY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), YOUTUBE_TYPE_PROXY, YoutubeProxyClass))
-
-#define YOUTUBE_IS_PROXY(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), YOUTUBE_TYPE_PROXY))
-
-#define YOUTUBE_IS_PROXY_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), YOUTUBE_TYPE_PROXY))
-
-#define YOUTUBE_PROXY_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), YOUTUBE_TYPE_PROXY, YoutubeProxyClass))
-
-typedef struct _YoutubeProxyPrivate YoutubeProxyPrivate;
-
-/**
- * YoutubeProxy:
- *
- * #YoutubeProxy has no publicly available members.
- */
-typedef struct {
- RestProxy parent;
- YoutubeProxyPrivate *priv;
-} YoutubeProxy;
-
-typedef struct {
+struct _YoutubeProxyClass {
RestProxyClass parent_class;
+
/*< private >*/
/* padding for future expansion */
gpointer _padding_dummy[8];
-} YoutubeProxyClass;
+};
#define YOUTUBE_PROXY_ERROR youtube_proxy_error_quark()
-GType youtube_proxy_get_type (void);
-
-RestProxy* youtube_proxy_new (const gchar *developer_key);
-
-RestProxy* youtube_proxy_new_with_auth (const gchar *developer_key,
- const gchar *user_auth);
-
-void youtube_proxy_set_user_auth (YoutubeProxy *proxy,
- const gchar *user_auth);
-
typedef void (*YoutubeProxyUploadCallback)(YoutubeProxy *proxy,
const gchar *payload,
gsize total,
@@ -83,15 +48,18 @@ typedef void (*YoutubeProxyUploadCallback)(YoutubeProxy *proxy,
GObject *weak_object,
gpointer user_data);
-gboolean youtube_proxy_upload_async (YoutubeProxy *self,
- const gchar *filename,
- GHashTable *fields,
- gboolean incomplete,
- YoutubeProxyUploadCallback callback,
- GObject *weak_object,
- gpointer user_data,
- GError **error);
+RestProxy *youtube_proxy_new (const gchar *developer_key);
+RestProxy *youtube_proxy_new_with_auth (const gchar *developer_key,
+ const gchar *user_auth);
+void youtube_proxy_set_user_auth (YoutubeProxy *proxy,
+ const gchar *user_auth);
+gboolean youtube_proxy_upload_async (YoutubeProxy *self,
+ const gchar *filename,
+ GHashTable *fields,
+ gboolean incomplete,
+ YoutubeProxyUploadCallback callback,
+ GObject *weak_object,
+ gpointer user_data,
+ GError **error);
G_END_DECLS
-
-#endif /* _YOUTUBE_PROXY */