Author: akv
Date: 2010-06-02 00:33:30 +0200 (Wed, 02 Jun 2010)
New Revision: 3416
Modified:
trunk/plugins/output-picasa/output-picasa.c
trunk/plugins/output-picasa/rs-picasa-client.c
trunk/plugins/output-picasa/rs-picasa-client.h
Log:
Catching 404 errors when uploading photo - more work needed to catch more
errors.
Modified: trunk/plugins/output-picasa/output-picasa.c
===================================================================
--- trunk/plugins/output-picasa/output-picasa.c 2010-06-01 18:30:50 UTC (rev
3415)
+++ trunk/plugins/output-picasa/output-picasa.c 2010-06-01 22:33:30 UTC (rev
3416)
@@ -159,6 +159,32 @@
gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo), rend, "text",
col);
}
+static gboolean
+deal_with_error(GError **error)
+{
+ if (!*error)
+ return FALSE;
+
+ g_warning("Error from Picasa: '%s'", (*error)->message);
+
+ gdk_threads_enter();
+ GtkWidget *dialog = gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
+ "Error: '%s'", (*error)->message);
+
+ gtk_window_set_title(GTK_WINDOW(dialog), _("Unhandled error from
Picasa"));
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog),
GTK_RESPONSE_CLOSE);
+
+ g_signal_connect(dialog, "response", G_CALLBACK(gtk_widget_destroy),
NULL);
+
+ gtk_widget_show (dialog);
+
+ gdk_threads_leave();
+
+ g_clear_error(error);
+
+ return TRUE;
+}
+
static void
album_set_active(GtkComboBox *combo, gchar *aid)
{
@@ -267,6 +293,7 @@
static gboolean
execute (RSOutput * output, RSFilter * filter)
{
+ GError *error = NULL;
RSPicasa *picasa = RS_PICASA (output);
RSOutput *jpegsave = rs_output_new ("RSJpegfile");
@@ -278,12 +305,12 @@
rs_output_execute (jpegsave, filter);
g_object_unref (jpegsave);
- gboolean ret = rs_picasa_client_upload_photo(picasa_client, temp_file,
picasa->album_id);
+ rs_picasa_client_upload_photo(picasa_client, temp_file,
picasa->album_id, &error);
unlink (temp_file);
g_free (temp_file);
- return TRUE;
+ return deal_with_error(&error);
}
GtkWidget *
Modified: trunk/plugins/output-picasa/rs-picasa-client.c
===================================================================
--- trunk/plugins/output-picasa/rs-picasa-client.c 2010-06-01 18:30:50 UTC
(rev 3415)
+++ trunk/plugins/output-picasa/rs-picasa-client.c 2010-06-01 22:33:30 UTC
(rev 3416)
@@ -24,6 +24,36 @@
PICASA_ALBUM_ID
} PicasaAlbum;
+static gboolean
+picasa_error(gint code, const GString *data, GError **error)
+{
+ gchar *error_msg = NULL;
+
+ switch(code)
+ {
+ case 200:
+ case 201:
+ break;
+ case 404:
+ error_msg = g_strdup_printf("Got error %d\n\n%s\n", code,
data->str);
+ break;
+ default:
+ error_msg = g_strdup_printf("Error not caught, please submit
this as a bugreport...\n\n%s\n", data->str);
+ break;
+ }
+
+ if (error_msg)
+ {
+ g_set_error(error,
g_quark_from_static_string("rawstudio_facebook_client_error"), code, "%s",
error_msg);
+ g_free(error_msg);
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
static GtkListStore *
xml_album_list_response(const GString *xml)
{
@@ -290,7 +320,7 @@
}
gboolean
-rs_picasa_client_upload_photo(PicasaClient *picasa_client, gchar *photo, gchar
*albumid)
+rs_picasa_client_upload_photo(PicasaClient *picasa_client, gchar *photo, gchar
*albumid, GError **error)
{
g_assert(picasa_client->auth_token != NULL);
g_assert(picasa_client->username != NULL);
@@ -325,14 +355,7 @@
glong response_code;
curl_easy_getinfo(picasa_client->curl, CURLINFO_RESPONSE_CODE,
&response_code);
- if (response_code != 201)
- {
- g_warning("Uncactched error - please submit the following as a
bugreport.");
- g_warning("%s", data->str);
- return FALSE;
- }
-
- return TRUE;
+ return picasa_error(response_code, data, error);
}
PicasaClient *
Modified: trunk/plugins/output-picasa/rs-picasa-client.h
===================================================================
--- trunk/plugins/output-picasa/rs-picasa-client.h 2010-06-01 18:30:50 UTC
(rev 3415)
+++ trunk/plugins/output-picasa/rs-picasa-client.h 2010-06-01 22:33:30 UTC
(rev 3416)
@@ -17,7 +17,7 @@
void rs_picasa_client_auth(PicasaClient *picasa_client);
GtkListStore * rs_picasa_client_get_album_list(PicasaClient *picasa_client);
char * rs_picasa_client_create_album(PicasaClient *picasa_client, const gchar
*name);
-gboolean rs_picasa_client_upload_photo(PicasaClient *picasa_client, gchar
*photo, gchar *albumid);
+gboolean rs_picasa_client_upload_photo(PicasaClient *picasa_client, gchar
*photo, gchar *albumid, GError **error);
PicasaClient * rs_picasa_client_init();
#endif /* RS_PICASA_CLIENT_H */
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit