summaryrefslogtreecommitdiff
path: root/rest-extras/lastfm-proxy.c
diff options
context:
space:
mode:
Diffstat (limited to 'rest-extras/lastfm-proxy.c')
-rw-r--r--rest-extras/lastfm-proxy.c132
1 files changed, 81 insertions, 51 deletions
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;