summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan A. Suarez Romero <jasuarez@igalia.com>2010-02-15 17:31:35 +0100
committerJuan A. Suarez Romero <jasuarez@igalia.com>2010-02-15 18:14:27 +0100
commit464ce7f56f152c56cd47b07a971b53be3e1facec (patch)
treef4fe61a57545cb670861d3523cacf1dd6e42f807
parent906632134513e9e2cc22dbf50fbc77c2383bc0ad (diff)
downloadgrilo-plugins-464ce7f56f152c56cd47b07a971b53be3e1facec.tar.gz
[flickr] Move auth api to source plugin
As API keys and secrets should be provided by clients, move out them to source.
-rw-r--r--src/flickr/gflickr.c75
-rw-r--r--src/flickr/gflickr.h2
-rw-r--r--src/flickr/grl-flickr.c2
3 files changed, 52 insertions, 27 deletions
diff --git a/src/flickr/gflickr.c b/src/flickr/gflickr.c
index 6621940..76d8f0d 100644
--- a/src/flickr/gflickr.c
+++ b/src/flickr/gflickr.c
@@ -7,10 +7,6 @@
G_FLICKR_TYPE, \
GFlickrPrivate))
-#define API_KEY "fa037bee8120a921b34f8209d715a2fa"
-#define AUTH_TOKEN "72157623286932154-c90318d470e96a29"
-#define AUTH_SECRET "9f6523b9c52e3317"
-
#define FLICKR_PHOTO_ORIG_URL \
"http://farm%s.static.flickr.com/%s/%s_%s_o.%s"
@@ -24,8 +20,8 @@
#define FLICKR_PHOTOS_SEARCH \
FLICKR_ENDPOINT \
- "api_key=" API_KEY \
- "&auth_token=" AUTH_TOKEN \
+ "api_key=%s" \
+ "&auth_token=%s" \
"&api_sig=%s" \
"&method=" FLICKR_PHOTOS_SEARCH_METHOD \
"&extras=media,date_taken,owner_name,url_o,url_t" \
@@ -35,8 +31,8 @@
#define FLICKR_PHOTOS_GETINFO \
FLICKR_ENDPOINT \
- "api_key=" API_KEY \
- "&auth_token=" AUTH_TOKEN \
+ "api_key=%s" \
+ "&auth_token=%s" \
"&api_sig=%s" \
"&method=" FLICKR_PHOTOS_GETINFO_METHOD \
"&photo_id=%ld"
@@ -51,9 +47,14 @@ typedef struct {
} GFlickrData;
struct _GFlickrPrivate {
+ gchar *api_key;
+ gchar *auth_token;
+ gchar *auth_secret;
gint per_page;
};
+static void g_flickr_finalize (GObject *object);
+
/* -------------------- GOBJECT -------------------- */
G_DEFINE_TYPE (GFlickr, g_flickr, G_TYPE_OBJECT);
@@ -61,6 +62,9 @@ G_DEFINE_TYPE (GFlickr, g_flickr, G_TYPE_OBJECT);
static void
g_flickr_class_init (GFlickrClass *klass)
{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->finalize = g_flickr_finalize;
+
g_type_class_add_private (klass, sizeof (GFlickrPrivate));
}
@@ -71,10 +75,26 @@ g_flickr_init (GFlickr *f)
f->priv->per_page = 100;
}
+static void
+g_flickr_finalize (GObject *object)
+{
+ GFlickr *f = G_FLICKR (object);
+ g_free (f->priv->api_key);
+ g_free (f->priv->auth_token);
+ g_free (f->priv->auth_secret);
+
+ G_OBJECT_CLASS (g_flickr_parent_class)->finalize (object);
+}
+
GFlickr *
-g_flickr_new (void)
+g_flickr_new (const gchar *api_key, const gchar *auth_token, const gchar *auth_secret)
{
- return g_object_new (G_FLICKR_TYPE, NULL);
+ GFlickr *f = g_object_new (G_FLICKR_TYPE, NULL);
+ f->priv->api_key = g_strdup (api_key);
+ f->priv->auth_token = g_strdup (auth_token);
+ f->priv->auth_secret = g_strdup (auth_secret);
+
+ return f;
}
/* -------------------- PRIVATE API -------------------- */
@@ -84,17 +104,17 @@ get_api_sig_photos_search (GFlickr *f, const gchar *text, gint page) {
gchar *signature;
gchar *text_to_sign;
- text_to_sign = g_strdup_printf (AUTH_SECRET
- "api_key"
- API_KEY
- "auth_token"
- AUTH_TOKEN
+ text_to_sign = g_strdup_printf ("%s"
+ "api_key%s"
+ "auth_token%s"
"extrasmedia,date_taken,owner_name,url_o,url_t"
- "method"
- FLICKR_PHOTOS_SEARCH_METHOD
+ "method" FLICKR_PHOTOS_SEARCH_METHOD
"page%d"
"per_page%d"
"text%s",
+ f->priv->auth_secret,
+ f->priv->api_key,
+ f->priv->auth_token,
page,
f->priv->per_page,
text);
@@ -110,14 +130,15 @@ get_api_sig_photos_getInfo (GFlickr *f, glong photo_id)
gchar *signature;
gchar *text_to_sign;
- text_to_sign = g_strdup_printf (AUTH_SECRET
- "api_key"
- API_KEY
- "auth_token"
- AUTH_TOKEN
- "method"
- FLICKR_PHOTOS_GETINFO_METHOD
- "photo_id%ld", photo_id);
+ text_to_sign = g_strdup_printf ("%s"
+ "api_key%s"
+ "auth_token%s"
+ "method" FLICKR_PHOTOS_GETINFO_METHOD
+ "photo_id%ld",
+ f->priv->auth_secret,
+ f->priv->api_key,
+ f->priv->auth_token,
+ photo_id);
signature = g_compute_checksum_for_string (G_CHECKSUM_MD5, text_to_sign, -1);
g_free (text_to_sign);
@@ -313,6 +334,8 @@ g_flickr_photos_getInfo (GFlickr *f,
/* Build the request */
gchar *request = g_strdup_printf (FLICKR_PHOTOS_GETINFO,
+ f->priv->api_key,
+ f->priv->auth_token,
api_sig,
photo_id);
g_free (api_sig);
@@ -339,6 +362,8 @@ g_flickr_photos_search (GFlickr *f,
/* Build the request */
gchar *request = g_strdup_printf (FLICKR_PHOTOS_SEARCH,
+ f->priv->api_key,
+ f->priv->auth_token,
api_sig,
f->priv->per_page,
page,
diff --git a/src/flickr/gflickr.h b/src/flickr/gflickr.h
index ad051c5..cc50c38 100644
--- a/src/flickr/gflickr.h
+++ b/src/flickr/gflickr.h
@@ -78,7 +78,7 @@ typedef void (*GFlickrPhotoListCb) (GFlickr *f, GList *photolist, gpointer user_
GType g_flickr_get_type (void);
-GFlickr *g_flickr_new (void);
+GFlickr *g_flickr_new (const gchar *api_key, const gchar *auth_token, const gchar *auth_secret);
void g_flickr_set_per_page (GFlickr *f, gint per_page);
diff --git a/src/flickr/grl-flickr.c b/src/flickr/grl-flickr.c
index 91d6579..4063192 100644
--- a/src/flickr/grl-flickr.c
+++ b/src/flickr/grl-flickr.c
@@ -152,7 +152,7 @@ static void
grl_flickr_source_init (GrlFlickrSource *source)
{
source->priv = GRL_FLICKR_SOURCE_GET_PRIVATE (source);
- source->priv->flickr = g_flickr_new ();
+ source->priv->flickr = g_flickr_new (FLICKR_KEY, FLICKR_TOKEN, FLICKR_SECRET);
}
G_DEFINE_TYPE (GrlFlickrSource, grl_flickr_source, GRL_TYPE_MEDIA_SOURCE);