[webp] Unique name parsing
authorAlberto Ruiz <aruiz@gnome.org>
Wed, 6 Jul 2011 10:09:45 +0000 (11:09 +0100)
committerAlberto Ruiz <aruiz@gnome.org>
Wed, 6 Jul 2011 11:38:00 +0000 (12:38 +0100)
example/sample.xml [new file with mode: 0644]
src/moonshot-webp-parser.vala

diff --git a/example/sample.xml b/example/sample.xml
new file mode 100644 (file)
index 0000000..e8e7f5f
--- /dev/null
@@ -0,0 +1,24 @@
+<identities>
+  <identity>
+    <display-name>Unique Name</display-name>
+    <user>username</user>
+    <password>ENCRYPTEDPW</password>
+    <realm>issuer name</realm>
+    <services>
+      <service>xmpp@jabber.project-moonshot.org</service>
+    </services>
+    <selection-rules>
+      <rule>
+        <pattern>PATTERN</pattern>
+        <always_confirm>true</always_confirm>
+      </rule>
+    </selection-rules>
+    <trust-anchor>
+      <ca-cert>ABCDEFGHIJKLMNOPQRSTUVWXYZ123455678910</ca-cert>
+      <subject>Foo</subject>
+      <subject-alt>Bar</subject-alt>
+      <!-- Or alternatively -->
+      <srv-cert>ABCDEFGHIJKLMNOPQRSTUVWXYZ123455678910</srv-cert>
+    </trust-anchor>
+  </identity>
+</identities> 
index 49dc5ac..f1d3570 100644 (file)
@@ -2,18 +2,67 @@ namespace WebProvisioning
 { 
   public IdCard card;
 
+  
+
+  bool
+  display_name_handler (SList<string> stack)
+  {
+    string[] display_name_path = {"display-name", "identity", "identities"};
+    
+    if (stack.length () != display_name_path.length)
+      return false;
+    
+    for (int i = 0; i<display_name_path.length; i++)
+    {
+      if (stack.nth_data(i) != display_name_path[i])
+        return false;
+    }
+    
+    return true;
+  }
+
   public void text_element_func (MarkupParseContext context,
                                  string text,
                                  size_t text_len) throws MarkupError
   {
     unowned SList<string> stack = context.get_element_stack ();
     
-    if (stack.nth_data(0) == "display-name")
+    if (text_len < 1)
+      return;
+    
+    if (stack.nth_data(0) == "display-name" && display_name_handler (stack))
+    {
+      card.display_name = text;
+    }
+    else if (stack.nth_data(0) == "user")
+    {
+    }
+    else if (stack.nth_data(0) == "password")
+    {
+    }
+    else if (stack.nth_data(0) == "realm")
+    {
+    }
+    else if (stack.nth_data(0) == "service")
+    {
+    }
+    else if (stack.nth_data(0) == "pattern")
+    {
+    }
+    else if (stack.nth_data(0) == "always_confirm")
     {
-      
     }
-
     
+    /*Trust anchor*/
+    else if (stack.nth_data(0) == "ca-cert")
+    {
+    }
+    else if (stack.nth_data(0) == "subject")
+    {
+    }
+    else if (stack.nth_data(0) == "ca-cert")
+    {
+    }
   }
 
   class WebProvisionParser
@@ -62,7 +111,11 @@ namespace WebProvisioning
       error ("%s does not exist", args[1]);
     }
     
+    card = new IdCard();
+    
     var webp = new WebProvisionParser (args[1]);
+    
+    debug ("%s", card.display_name);
 
     return 0;
   }