[gthumb: 4/10] [flicker] specify the server parameter in a separate structure
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb: 4/10] [flicker] specify the server parameter in a separate structure
- Date: Tue, 6 Apr 2010 23:23:38 +0000 (UTC)
commit 1ca749b5eb4eb38f5d0dcac0f73e7469e00a3380
Author: Paolo Bacchilega <paobac src gnome org>
Date: Mon Apr 5 22:20:07 2010 +0200
[flicker] specify the server parameter in a separate structure
Use a FlickrServer struct to specify the server parameters, this
allows to add support for other flickr-like servers.
extensions/flicker/actions.c | 16 ++++++++++++-
extensions/flicker/dlg-export-to-flickr.c | 13 +++++++----
extensions/flicker/dlg-export-to-flickr.h | 6 +++-
extensions/flicker/dlg-import-from-flickr.c | 7 ++++-
extensions/flicker/dlg-import-from-flickr.h | 4 ++-
extensions/flicker/flickr-connection.c | 31 ++++++++++++++++++--------
extensions/flicker/flickr-connection.h | 8 ++++--
extensions/flicker/flickr-service.c | 12 +++++-----
extensions/flicker/flickr-types.h | 10 ++++++++
9 files changed, 76 insertions(+), 31 deletions(-)
---
diff --git a/extensions/flicker/actions.c b/extensions/flicker/actions.c
index 35cca0d..462d6d4 100644
--- a/extensions/flicker/actions.c
+++ b/extensions/flicker/actions.c
@@ -26,6 +26,18 @@
#include <gthumb.h>
#include "dlg-export-to-flickr.h"
#include "dlg-import-from-flickr.h"
+#include "flickr-types.h"
+
+
+static FlickrServer www_flickr_com = {
+ "Flickr.com",
+ "http://www.flickr.com",
+ "http://www.flickr.com/services/auth/",
+ "http://api.flickr.com/services/rest",
+ "http://api.flickr.com/services/upload/",
+ "8960706ee7f4151e893b11837e9c24ce",
+ "1ff8d1e45c873423"
+};
void
@@ -39,7 +51,7 @@ gth_browser_activate_action_export_flicker (GtkAction *action,
file_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items);
if (file_list == NULL)
file_list = gth_file_store_get_visibles (gth_browser_get_file_store (browser));
- dlg_export_to_flickr (browser, file_list);
+ dlg_export_to_flickr (&www_flickr_com, browser, file_list);
_g_object_list_unref (file_list);
_gtk_tree_path_list_free (items);
@@ -50,5 +62,5 @@ void
gth_browser_activate_action_import_flicker (GtkAction *action,
GthBrowser *browser)
{
- dlg_import_from_flickr (browser);
+ dlg_import_from_flickr (&www_flickr_com, browser);
}
diff --git a/extensions/flicker/dlg-export-to-flickr.c b/extensions/flicker/dlg-export-to-flickr.c
index 791dad3..fdf735f 100644
--- a/extensions/flicker/dlg-export-to-flickr.c
+++ b/extensions/flicker/dlg-export-to-flickr.c
@@ -49,6 +49,7 @@ enum {
typedef struct {
+ FlickrServer *server;
GthBrowser *browser;
GthFileData *location;
GList *file_list;
@@ -118,14 +119,14 @@ completed_messagedialog_response_cb (GtkDialog *dialog,
g_string_append (ids, ",");
g_string_append (ids, (char *) scan->data);
}
- url = g_strconcat ("http://www.flickr.com/photos/upload/edit/?ids=", ids->str, NULL);
+ url = g_strconcat (data->server->url, "/photos/upload/edit/?ids=", ids->str, NULL);
g_string_free (ids, TRUE);
}
else if (data->photoset->url != NULL)
url = g_strdup (data->photoset->url);
else if (data->photoset->id != NULL)
- url = g_strconcat ("http://www.flickr.com/photos/", data->user->id, "/sets/", data->photoset->id, NULL);
+ url = g_strconcat (data->server->url, "/photos/", data->user->id, "/sets/", data->photoset->id, NULL);
if ((url != NULL) && ! gtk_show_uri (gtk_widget_get_screen (GTK_WIDGET (dialog)), url, 0, &error)) {
if (data->conn != NULL)
@@ -467,8 +468,9 @@ account_combobox_changed_cb (GtkComboBox *widget,
void
-dlg_export_to_flickr (GthBrowser *browser,
- GList *file_list)
+dlg_export_to_flickr (FlickrServer *server,
+ GthBrowser *browser,
+ GList *file_list)
{
DialogData *data;
GList *scan;
@@ -479,6 +481,7 @@ dlg_export_to_flickr (GthBrowser *browser,
GtkWidget *list_view;
data = g_new0 (DialogData, 1);
+ data->server = server;
data->browser = browser;
data->location = gth_file_data_dup (gth_browser_get_location_data (browser));
data->builder = _gtk_builder_new_from_file ("export-to-flickr.ui", "flicker");
@@ -555,7 +558,7 @@ dlg_export_to_flickr (GthBrowser *browser,
G_CALLBACK (account_combobox_changed_cb),
data);
- data->conn = flickr_connection_new ();
+ data->conn = flickr_connection_new (data->server);
data->service = flickr_service_new (data->conn);
data->auth = flickr_authentication_new (data->conn,
data->service,
diff --git a/extensions/flicker/dlg-export-to-flickr.h b/extensions/flicker/dlg-export-to-flickr.h
index c7f0c4d..be47d46 100644
--- a/extensions/flicker/dlg-export-to-flickr.h
+++ b/extensions/flicker/dlg-export-to-flickr.h
@@ -24,8 +24,10 @@
#define DLG_EXPORT_TO_FLICKR_H
#include <gthumb.h>
+#include "flickr-types.h"
-void dlg_export_to_flickr (GthBrowser *browser,
- GList *file_list);
+void dlg_export_to_flickr (FlickrServer *server,
+ GthBrowser *browser,
+ GList *file_list);
#endif /* DLG_EXPORT_TO_FLICKR_H */
diff --git a/extensions/flicker/dlg-import-from-flickr.c b/extensions/flicker/dlg-import-from-flickr.c
index 27e2a7d..e9a5520 100644
--- a/extensions/flicker/dlg-import-from-flickr.c
+++ b/extensions/flicker/dlg-import-from-flickr.c
@@ -53,6 +53,7 @@ enum {
typedef struct {
+ FlickrServer *server;
GthBrowser *browser;
GthFileData *location;
GtkBuilder *builder;
@@ -509,12 +510,14 @@ preferences_button_clicked_cb (GtkWidget *widget,
void
-dlg_import_from_flickr (GthBrowser *browser)
+dlg_import_from_flickr (FlickrServer *server,
+ GthBrowser *browser)
{
DialogData *data;
GthThumbLoader *thumb_loader;
data = g_new0 (DialogData, 1);
+ data->server = server;
data->browser = browser;
data->location = gth_file_data_dup (gth_browser_get_location_data (browser));
data->builder = _gtk_builder_new_from_file ("import-from-flickr.ui", "flicker");
@@ -601,7 +604,7 @@ dlg_import_from_flickr (GthBrowser *browser)
update_selection_status (data);
- data->conn = flickr_connection_new ();
+ data->conn = flickr_connection_new (data->server);
data->service = flickr_service_new (data->conn);
data->auth = flickr_authentication_new (data->conn,
data->service,
diff --git a/extensions/flicker/dlg-import-from-flickr.h b/extensions/flicker/dlg-import-from-flickr.h
index 34d238b..ec1ef94 100644
--- a/extensions/flicker/dlg-import-from-flickr.h
+++ b/extensions/flicker/dlg-import-from-flickr.h
@@ -24,7 +24,9 @@
#define DLG_IMPORT_FROM_FLICKR_H
#include <gthumb.h>
+#include "flickr-types.h"
-void dlg_import_from_flickr (GthBrowser *browser);
+void dlg_import_from_flickr (FlickrServer *server,
+ GthBrowser *browser);
#endif /* DLG_IMPORT_FROM_FLICKR_H */
diff --git a/extensions/flicker/flickr-connection.c b/extensions/flicker/flickr-connection.c
index 49c7ef5..5110a46 100644
--- a/extensions/flicker/flickr-connection.c
+++ b/extensions/flicker/flickr-connection.c
@@ -28,9 +28,7 @@
#include "flickr-user.h"
-#undef DEBUG_FLICKR_CONNECTION
-#define GTHUMB_FLICKR_API_KEY "8960706ee7f4151e893b11837e9c24ce"
-#define GTHUMB_FLICKR_SHARED_SECRET "1ff8d1e45c873423"
+#undef DEBUG_FLICKR_CONNECTION
GQuark
@@ -160,9 +158,21 @@ flickr_connection_get_type (void)
FlickrConnection *
-flickr_connection_new (void)
+flickr_connection_new (FlickrServer *server)
{
- return (FlickrConnection *) g_object_new (FLICKR_TYPE_CONNECTION, NULL);
+ FlickrConnection *self;
+
+ self = (FlickrConnection *) g_object_new (FLICKR_TYPE_CONNECTION, NULL);
+ self->server = server;
+
+ return self;
+}
+
+
+FlickrServer *
+flickr_connection_get_server (FlickrConnection *self)
+{
+ return self->server;
}
@@ -233,12 +243,12 @@ flickr_connection_add_api_sig (FlickrConnection *self,
GList *keys;
GList *scan;
- g_hash_table_insert (data_set, "api_key", GTHUMB_FLICKR_API_KEY);
+ g_hash_table_insert (data_set, "api_key", (gpointer) self->server->api_key);
if (self->priv->token != NULL)
g_hash_table_insert (data_set, "auth_token", self->priv->token);
g_checksum_reset (self->priv->checksum);
- g_checksum_update (self->priv->checksum, (guchar *) GTHUMB_FLICKR_SHARED_SECRET, -1);
+ g_checksum_update (self->priv->checksum, (guchar *) self->server->shared_secret, -1);
keys = g_hash_table_get_keys (data_set);
keys = g_list_sort (keys, (GCompareFunc) strcmp);
@@ -312,7 +322,7 @@ flickr_connection_get_frob (FlickrConnection *self,
data_set = g_hash_table_new (g_str_hash, g_str_equal);
g_hash_table_insert (data_set, "method", "flickr.auth.getFrob");
flickr_connection_add_api_sig (self, data_set);
- msg = soup_form_request_new_from_hash ("GET", "http://api.flickr.com/services/rest", data_set);
+ msg = soup_form_request_new_from_hash ("GET", self->server->rest_url, data_set);
flickr_connection_send_message (self,
msg,
cancellable,
@@ -376,7 +386,8 @@ flickr_connection_get_login_link (FlickrConnection *self,
g_hash_table_insert (data_set, "perms", get_access_type_name (access_type));
flickr_connection_add_api_sig (self, data_set);
- link = g_string_new ("http://www.flickr.com/services/auth/?");
+ link = g_string_new (self->server->authentication_url);
+ g_string_append (link, "?");
keys = g_hash_table_get_keys (data_set);
for (scan = keys; scan; scan = scan->next) {
char *key = scan->data;
@@ -463,7 +474,7 @@ flickr_connection_get_token (FlickrConnection *self,
g_hash_table_insert (data_set, "method", "flickr.auth.getToken");
g_hash_table_insert (data_set, "frob", self->priv->frob);
flickr_connection_add_api_sig (self, data_set);
- msg = soup_form_request_new_from_hash ("GET", "http://api.flickr.com/services/rest", data_set);
+ msg = soup_form_request_new_from_hash ("GET", self->server->rest_url, data_set);
flickr_connection_send_message (self,
msg,
cancellable,
diff --git a/extensions/flicker/flickr-connection.h b/extensions/flicker/flickr-connection.h
index df21060..c0a2e81 100644
--- a/extensions/flicker/flickr-connection.h
+++ b/extensions/flicker/flickr-connection.h
@@ -30,6 +30,7 @@
#include <libsoup/soup.h>
#endif /* HAVE_LIBSOUP_GNOME */
#include <gthumb.h>
+#include "flickr-types.h"
typedef enum {
FLICKR_ACCESS_READ,
@@ -53,17 +54,18 @@ typedef struct _FlickrConnectionClass FlickrConnectionClass;
struct _FlickrConnection
{
- GthTask __parent;
+ GObject __parent;
+ FlickrServer *server;
FlickrConnectionPrivate *priv;
};
struct _FlickrConnectionClass
{
- GthTaskClass __parent_class;
+ GObjectClass __parent_class;
};
GType flickr_connection_get_type (void) G_GNUC_CONST;
-FlickrConnection * flickr_connection_new (void);
+FlickrConnection * flickr_connection_new (FlickrServer *server);
void flickr_connection_send_message (FlickrConnection *self,
SoupMessage *msg,
GCancellable *cancellable,
diff --git a/extensions/flicker/flickr-service.c b/extensions/flicker/flickr-service.c
index 895fa4b..7376872 100644
--- a/extensions/flicker/flickr-service.c
+++ b/extensions/flicker/flickr-service.c
@@ -247,7 +247,7 @@ flickr_service_get_upload_status (FlickrService *self,
data_set = g_hash_table_new (g_str_hash, g_str_equal);
g_hash_table_insert (data_set, "method", "flickr.people.getUploadStatus");
flickr_connection_add_api_sig (self->priv->conn, data_set);
- msg = soup_form_request_new_from_hash ("GET", "http://api.flickr.com/services/rest", data_set);
+ msg = soup_form_request_new_from_hash ("GET", self->priv->conn->server->rest_url, data_set);
flickr_connection_send_message (self->priv->conn,
msg,
cancellable,
@@ -353,7 +353,7 @@ flickr_service_list_photosets (FlickrService *self,
if (user_id != NULL)
g_hash_table_insert (data_set, "user_id", (char *) user_id);
flickr_connection_add_api_sig (self->priv->conn, data_set);
- msg = soup_form_request_new_from_hash ("GET", "http://api.flickr.com/services/rest", data_set);
+ msg = soup_form_request_new_from_hash ("GET", self->priv->conn->server->rest_url, data_set);
flickr_connection_send_message (self->priv->conn,
msg,
cancellable,
@@ -456,7 +456,7 @@ flickr_service_create_photoset (FlickrService *self,
g_hash_table_insert (data_set, "title", photoset->title);
g_hash_table_insert (data_set, "primary_photo_id", photoset->primary);
flickr_connection_add_api_sig (self->priv->conn, data_set);
- msg = soup_form_request_new_from_hash ("GET", "http://api.flickr.com/services/rest", data_set);
+ msg = soup_form_request_new_from_hash ("GET", self->priv->conn->server->rest_url, data_set);
flickr_connection_send_message (self->priv->conn,
msg,
cancellable,
@@ -585,7 +585,7 @@ add_current_photo_to_set (FlickrService *self)
g_hash_table_insert (data_set, "photoset_id", self->priv->add_photos->photoset->id);
g_hash_table_insert (data_set, "photo_id", photo_id);
flickr_connection_add_api_sig (self->priv->conn, data_set);
- msg = soup_form_request_new_from_hash ("POST", "http://api.flickr.com/services/rest", data_set);
+ msg = soup_form_request_new_from_hash ("POST", self->priv->conn->server->rest_url, data_set);
flickr_connection_send_message (self->priv->conn,
msg,
self->priv->add_photos->cancellable,
@@ -835,7 +835,7 @@ post_photo_file_buffer_ready_cb (void **buffer,
g_free (details);
}
- msg = soup_form_request_new_from_multipart ("http://api.flickr.com/services/upload/", multipart);
+ msg = soup_form_request_new_from_multipart (self->priv->conn->server->upload_url, multipart);
flickr_connection_send_message (self->priv->conn,
msg,
self->priv->post_photos->cancellable,
@@ -1039,7 +1039,7 @@ flickr_service_list_photos (FlickrService *self,
g_free (s);
}
flickr_connection_add_api_sig (self->priv->conn, data_set);
- msg = soup_form_request_new_from_hash ("GET", "http://api.flickr.com/services/rest", data_set);
+ msg = soup_form_request_new_from_hash ("GET", self->priv->conn->server->rest_url, data_set);
flickr_connection_send_message (self->priv->conn,
msg,
cancellable,
diff --git a/extensions/flicker/flickr-types.h b/extensions/flicker/flickr-types.h
index 4c309b8..b7620af 100644
--- a/extensions/flicker/flickr-types.h
+++ b/extensions/flicker/flickr-types.h
@@ -48,4 +48,14 @@ typedef enum {
FLICKR_SIZE_LARGE = 1024
} FlickrSize;
+typedef struct {
+ const char *name;
+ const char *url;
+ const char *authentication_url;
+ const char *rest_url;
+ const char *upload_url;
+ const char *api_key;
+ const char *shared_secret;
+} FlickrServer;
+
#endif /* FLICKR_TYPES_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]