[california/wip/725763-google] Better error reporting, defensive measure when parsing URI



commit d79548b5a345fa0d3a2a78e0dbc617e6a689e64a
Author: Jim Nelson <jim yorba org>
Date:   Thu Apr 3 17:20:08 2014 -0700

    Better error reporting, defensive measure when parsing URI

 .../activator-google-calendar-list-pane.vala       |   27 ++++++++++---------
 1 files changed, 14 insertions(+), 13 deletions(-)
---
diff --git a/src/activator/google/activator-google-calendar-list-pane.vala 
b/src/activator/google/activator-google-calendar-list-pane.vala
index 954a858..f50afa7 100644
--- a/src/activator/google/activator-google-calendar-list-pane.vala
+++ b/src/activator/google/activator-google-calendar-list-pane.vala
@@ -141,30 +141,30 @@ public class GoogleCalendarListPane : Gtk.Grid, Card {
         try {
             uri = URI.parse(calendar.content_uri);
             
+            // look for first path element after "/feeds/", which is the resource name of the
+            // calendar
             string[] elements = Soup.URI.decode(uri.path).split("/");
             string? resource_name = null;
-            foreach (string element in elements) {
-                if (element == "feeds") {
-                    resource_name = element;
-                } else if (resource_name != null) {
-                    resource_name = element;
+            for (int ctr = 0; ctr < elements.length; ctr++) {
+                if (elements[ctr] == "feeds") {
+                    if (ctr < elements.length - 1)
+                        resource_name = elements[ctr + 1];
                     
                     break;
                 }
             }
             
-            if (resource_name == null) {
-                errmsg = "Not a feed URI or no resource name found";
-            } else {
-                debug("resource name = %s", resource_name);
+            if (resource_name == null)
+                errmsg = _("Bad Google URI \"%s\"").printf(uri.to_string(false));
+            else
                 uri.set_path("/calendar/dav/%s/events".printf(Soup.URI.encode(resource_name, null)));
-            }
         } catch (Error err) {
             errmsg = err.message;
         }
         
-        if (uri == null || errmsg != null) {
-            debug("Bad calendar URI %s: %s", calendar.content_uri, errmsg);
+        if (errmsg != null) {
+            Application.instance.error_message(_("Unable to subscribe to %s: %s").printf(
+                calendar.title, errmsg));
             
             dismissed(false);
             
@@ -177,7 +177,8 @@ public class GoogleCalendarListPane : Gtk.Grid, Card {
                 calendar.color.to_hexadecimal(), null);
             completed();
         } catch (Error err) {
-            debug("Unable to create subscription to %s: %s", calendar.content_uri, err.message);
+            Application.instance.error_message(_("Unable to subscribe to %s: %s").printf(
+                calendar.title, err.message));
         }
         
         dismissed(true);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]