diff plugins.js @ 26:82bffc4a07a9

Fix disco info.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Fri, 27 Jan 2012 04:58:44 +0100
parents 7fcccf59e6ec
children b6e4bc19ff5a
line wrap: on
line diff
--- a/plugins.js
+++ b/plugins.js
@@ -154,10 +154,31 @@ Lightstring.discoItems = function(aConne
 };
 Lightstring.discoInfo = function(aConnection, aTo, aNode, aCallback) {
   aConnection.send(Lightstring.stanza.disco.info(aTo, aNode), function(answer){
-    var field = answer.querySelector('field[var="pubsub#creator"] > value');
-    var creator = field ? field.textContent : '';
-    //FIXME callback the entire data
-    aCallback(creator);
+    var identities = [];
+    var features = [];
+
+    var children = answer.firstChild.children;
+    var length = children.length;
+
+    for (var i = 0; i < length; i++) {
+      var child = children[i];
+
+      if (child.localName === 'feature')
+        features.push(child.getAttributeNS(null, 'var'));
+
+      else if (child.localName === 'identity') {
+        var identity = {
+          category: child.getAttributeNS(null, 'category'),
+          type: child.getAttributeNS(null, 'type')
+        };
+        var name = child.getAttributeNS(null, 'name');
+        if (name)
+          identity.name = name;
+        identities.push(identity);
+      }
+    }
+
+    aCallback({identities: identities, features: features});
   });
 };
 //////////