Author: akv
Date: 2010-06-05 00:03:52 +0200 (Sat, 05 Jun 2010)
New Revision: 3417

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:
Added more error handling in picasa uploader.

Modified: trunk/plugins/output-picasa/output-picasa.c
===================================================================
--- trunk/plugins/output-picasa/output-picasa.c 2010-06-01 22:33:30 UTC (rev 
3416)
+++ trunk/plugins/output-picasa/output-picasa.c 2010-06-04 22:03:52 UTC (rev 
3417)
@@ -234,17 +234,18 @@
 static void
 create_album(GtkButton *button, gpointer callback_data)
 {
+       GError *error = NULL;
         CreateAlbumData *create_album_data = callback_data;
         PicasaClient *picasa_client = create_album_data->picasa_client;
         GtkEntry *entry = create_album_data->entry;
         GtkComboBox *combobox = create_album_data->combobox;
         const gchar *album_name = gtk_entry_get_text(entry);
 
-       gchar *aid = rs_picasa_client_create_album(picasa_client, album_name);
+       gchar *aid = rs_picasa_client_create_album(picasa_client, album_name, 
&error);
 
         if (aid)
         {
-                GtkListStore *albums = 
rs_picasa_client_get_album_list(picasa_client);
+                GtkListStore *albums = 
rs_picasa_client_get_album_list(picasa_client, &error);
                 gtk_combo_box_set_model(combobox, GTK_TREE_MODEL(albums));
                 album_set_active(combobox, aid);
                 gtk_entry_set_text(entry, "");
@@ -261,7 +262,7 @@
 
        PicasaClient *picasa_client = rs_picasa_client_init();
 
-        GtkListStore *albums = rs_picasa_client_get_album_list(picasa_client);
+        GtkListStore *albums = rs_picasa_client_get_album_list(picasa_client, 
&error);
         GtkWidget *combobox = gtk_combo_box_new();
         combobox_cell_text(GTK_COMBO_BOX(combobox), 0);
         gtk_combo_box_set_model(GTK_COMBO_BOX(combobox), 
GTK_TREE_MODEL(albums));

Modified: trunk/plugins/output-picasa/rs-picasa-client.c
===================================================================
--- trunk/plugins/output-picasa/rs-picasa-client.c      2010-06-01 22:33:30 UTC 
(rev 3416)
+++ trunk/plugins/output-picasa/rs-picasa-client.c      2010-06-04 22:03:52 UTC 
(rev 3417)
@@ -35,10 +35,10 @@
        case 201:
                break;
        case 404:
-               error_msg = g_strdup_printf("Got error %d\n\n%s\n", code, 
data->str);
+               error_msg = g_strdup(data->str);
                break;
        default:
-               error_msg = g_strdup_printf("Error not caught, please submit 
this as a bugreport...\n\n%s\n", data->str);
+               error_msg = g_strdup_printf("Error not caught, please submit 
this as a bugreport:\n%s", data->str);
                break;
        }
 
@@ -258,7 +258,7 @@
 }
 
 GtkListStore *
-rs_picasa_client_get_album_list(PicasaClient *picasa_client)
+rs_picasa_client_get_album_list(PicasaClient *picasa_client, GError **error)
 {
        g_assert(picasa_client->auth_token != NULL);
        g_assert(picasa_client->username != NULL);
@@ -282,11 +282,16 @@
         CURLcode result = curl_easy_perform(picasa_client->curl);
        handle_curl_code(result);
 
-       return xml_album_list_response(data);
+       glong response_code;
+       curl_easy_getinfo(picasa_client->curl, CURLINFO_RESPONSE_CODE, 
&response_code);
+       if (picasa_error(response_code, data, error))
+               return xml_album_list_response(data);
+       else
+               return NULL;
 }
 
 gchar *
-rs_picasa_client_create_album(PicasaClient *picasa_client, const gchar *name)
+rs_picasa_client_create_album(PicasaClient *picasa_client, const gchar *name, 
GError **error)
 {
        gchar *body = g_strdup_printf("<entry 
xmlns='http://www.w3.org/2005/Atom' xmlns:media='http://search.yahoo.com/mrss/' 
xmlns:gphoto='http://schemas.google.com/photos/2007'> <title 
type='text'>%s</title><summary 
type='text'></summary><gphoto:location></gphoto:location><gphoto:access>private</gphoto:access><gphoto:commentingEnabled>true</gphoto:commentingEnabled><gphoto:timestamp>%d000</gphoto:timestamp><category
 scheme='http://schemas.google.com/g/2005#kind' 
term='http://schemas.google.com/photos/2007#album'></category></entry>", name, 
(int) time(NULL));
 
@@ -316,7 +321,12 @@
         CURLcode result = curl_easy_perform(picasa_client->curl);
        handle_curl_code(result);
 
-       return xml_album_create_response(data);
+       glong response_code;
+       curl_easy_getinfo(picasa_client->curl, CURLINFO_RESPONSE_CODE, 
&response_code);
+       if (picasa_error(response_code, data, error))
+               return xml_album_create_response(data);
+       else
+               return NULL;
 }
 
 gboolean

Modified: trunk/plugins/output-picasa/rs-picasa-client.h
===================================================================
--- trunk/plugins/output-picasa/rs-picasa-client.h      2010-06-01 22:33:30 UTC 
(rev 3416)
+++ trunk/plugins/output-picasa/rs-picasa-client.h      2010-06-04 22:03:52 UTC 
(rev 3417)
@@ -15,8 +15,8 @@
 
 gboolean rs_picasa_client_auth_popup(PicasaClient *picasa_client);
 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);
+GtkListStore * rs_picasa_client_get_album_list(PicasaClient *picasa_client, 
GError **error);
+char * rs_picasa_client_create_album(PicasaClient *picasa_client, const gchar 
*name, GError **error);
 gboolean rs_picasa_client_upload_photo(PicasaClient *picasa_client, gchar 
*photo, gchar *albumid, GError **error);
 PicasaClient * rs_picasa_client_init();
 


_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit

Reply via email to