private void OnDiscoNodeHandler2(DiscoManager sender, DiscoNode node, object state) { var param = node.Children.Cast <DiscoNode>(); var rooms = _defaultRooms.Where(i => param.Any(j => i.Key.Equals(j.Name, StringComparison.InvariantCultureIgnoreCase))); foreach (var r in rooms) { JoinRoom(r.Key, r.Value); } }
private void hlp_DiscoHandler_FindServiceWithFeature(DiscoManager sender, DiscoNode node, object state) { if (node == null) { return; } if (node.Name == "Rooms") { _discoManager.BeginGetItems(node, hlp_DiscoHandler_SubscribeToRooms, new object()); } }
void ReceivedItems(DiscoManager manager, DiscoNode node, object state) { string jid = node.JID.ToString(); string nodeName = String.Empty; if (node.Node != null) { nodeName = node.Node; } string templateContent = Util.ReadResource("ServiceDiscovery.html"); Template template = new Template(templateContent); template.SetField("NAME", jid); template.SetField("HREF", String.Format("xmpp:{0}?disco", jid)); template.SetField("NODE", nodeName); template.SelectSection("FEATURES"); foreach (var feature in node.FeatureNames) { template.SetField("FEATURE_NAME", feature); template.AppendSection(); } template.DeselectSection(); template.SelectSection("ITEMS"); foreach (DiscoNode item in node.Children) { template.SetField("ITEM_NAME", item.Name); template.SetField("ITEM_URL", String.Format("xmpp:{0}?disco;node={1}", item.JID.ToString(), item.Node)); template.AppendSection(); } template.DeselectSection(); template.SelectSection("IDENTITIES"); foreach (var identity in node.GetIdentities()) { template.SetField("IDENTITY_NAME", identity.Name); template.SetField("IDENTITY_CATEGORY", identity.Category); template.SetField("IDENTITY_TYPE", identity.Type); template.AppendSection(); } template.DeselectSection(); QApplication.Invoke(delegate { Uri uri = new Uri(String.Format("xmpp:{0}?disco;node={1}", node.JID.ToString(), node.Node)); LoadContent(uri, template.getContent()); }); }
private void GotRoot(DiscoManager sender, DiscoNode node, object state) { if (node.Children != null) { foreach (DiscoNode component in node.Children) { if (component.HasFeature(Jabber.Protocol.URI.MUC)) { cmbJID.Items.Add(component.JID); } } if (cmbJID.Items.Count > 0) { cmbJID.SelectedIndex = 0; } } cmbJID.EndUpdate(); }
private void hlp_DiscoHandler_SubscribeToRooms(DiscoManager sender, DiscoNode node, object state) { if (node == null) { return; } if (node.Children != null && _subscribedRooms == "@all") { foreach (DiscoNode dn in node.Children) { Logger.Info(string.Format("Subscribing to: '{0}':'{1}' on '{2}'", dn.JID, dn.Name, _jabberClient.Server)); // we have to build a new JID here, with the nickname included http://xmpp.org/extensions/xep-0045.html#enter-muc JID subscriptionJid = new JID(dn.JID.User, dn.JID.Server, "AutoBot ."); Room room = _conferenceManager.GetRoom(subscriptionJid); room.Join(); } } }
public void ComplexGenerationExample() { XmlDocument doc = new XmlDocument(); doc.LoadXml("<book xml:lang='en'/>"); XmlElement book = doc.DocumentElement; foreach (XmlAttribute attr in book.Attributes) { System.Console.WriteLine(attr.Name); } XmlElement root = doc.DocumentElement; DiscoInfo info = new DiscoInfo(doc); info.AddFeature("http://jabber.org/protocol/muc"); info.AddFeature("http://jabber.org/protocol/disco#info"); info.AddFeature("http://jabber.org/protocol/disco#items"); info.AddIdentity("client", "pc", "Psi 0.9.1", "en"); info.AddIdentity("client", "pc", "\u03a8 0.9.1", "el"); Data x = info.CreateExtension(); x.FormType = "urn:xmpp:dataforms:softwareinfo"; x.AddField("ip_version").Vals = new string[] { "ipv4", "ipv6" }; x.AddField("os").Val = "Mac"; x.AddField("os_version").Val = "10.5.1"; x.AddField("software").Val = "Psi"; x.AddField("software_version").Val = "0.11"; DiscoNode dn = new DiscoNode(new JID(null, "placeholder", null), null); dn.AddInfo(info); CapsManager cm = new CapsManager(dn); Assert.AreEqual("8lu+88MRxmKM7yO3MEzY7YmTsWs=", cm.Ver); }
void ReceivedFeatures(DiscoManager manager, DiscoNode node, object state) { // Now query for items... m_Account.DiscoManager.BeginGetItems(node, new DiscoNodeHandler(ReceivedItems), null); }
private void OnDiscoNodeHandler1(DiscoManager sender, DiscoNode node, object state) { sender.BeginGetItems(node, OnDiscoNodeHandler2, state); }