[webp] User name parsing
authorAlberto Ruiz <aruiz@gnome.org>
Wed, 6 Jul 2011 10:21:51 +0000 (11:21 +0100)
committerAlberto Ruiz <aruiz@gnome.org>
Wed, 6 Jul 2011 11:38:00 +0000 (12:38 +0100)
src/moonshot-webp-parser.vala

index f1d3570..507f0c6 100644 (file)
@@ -2,25 +2,37 @@ namespace WebProvisioning
 { 
   public IdCard card;
 
-  
-
   bool
-  display_name_handler (SList<string> stack)
+  check_stack (SList<string> stack, string[] reference)
   {
-    string[] display_name_path = {"display-name", "identity", "identities"};
-    
-    if (stack.length () != display_name_path.length)
+    if (stack.length () < reference.length)
       return false;
     
-    for (int i = 0; i<display_name_path.length; i++)
+    for (int i = 0; i<reference.length; i++)
     {
-      if (stack.nth_data(i) != display_name_path[i])
+      if (stack.nth_data(i) != reference[i])
         return false;
     }
-    
+
     return true;
   }
 
+  bool
+  user_handler (SList<string> stack)
+  {
+    string[] user_path = {"user", "identity"};
+    
+    return check_stack (stack, user_path);
+  }
+
+  bool
+  display_name_handler (SList<string> stack)
+  {
+    string[] display_name_path = {"display-name", "identity"};
+    
+    return check_stack (stack, display_name_path);
+  }
+
   public void text_element_func (MarkupParseContext context,
                                  string text,
                                  size_t text_len) throws MarkupError
@@ -34,8 +46,9 @@ namespace WebProvisioning
     {
       card.display_name = text;
     }
-    else if (stack.nth_data(0) == "user")
+    else if (stack.nth_data(0) == "user" && user_handler (stack))
     {
+      card.username = text;
     }
     else if (stack.nth_data(0) == "password")
     {
@@ -115,8 +128,8 @@ namespace WebProvisioning
     
     var webp = new WebProvisionParser (args[1]);
     
-    debug ("%s", card.display_name);
-
+    debug ("%s %s", card.display_name, card.username);
+    
     return 0;
   }
 }