def to_profile_element(e): p = E(u'profile', namespace=XMPP_USER_PROFILE_NS) if e.x: Data.to_element(e.x, parent=p) return p
def to_element(e): iq = Entity.to_element(e) p = E(u'profile', namespace=XMPP_USER_PROFILE_NS, parent=iq) if e.x: Data.to_element(e.x, parent=p) return iq
def from_element(e): disco = FeaturesDiscovery(JID.parse(e.get_attribute_value('from')), JID.parse(e.get_attribute_value('to')), type=e.get_attribute_value('type'), stanza_id=e.get_attribute_value('id')) for c in e.xml_children: if not isinstance(c, E): continue if c.xml_ns in [XMPP_DISCO_INFO_NS, XMPP_DISCO_ITEMS_NS]: for i in c.xml_children: if i.xml_ns in [XMPP_DISCO_INFO_NS, XMPP_DISCO_ITEMS_NS]: if i.xml_name == 'identity': ident = Identity(i.get_attribute_value('name'), i.get_attribute_value('category'), i.get_attribute_value('type')) disco.identities.append(ident) elif i.xml_name == 'feature': feat = Feature(i.get_attribute_value('var')) disco.features.append(feat) elif i.xml_name == 'item': jid = JID.parse(unicode(i.get_attribute_value('jid'))) item = Item(jid, i.get_attribute_value('action'), i.get_attribute_value('name'), i.get_attribute_value('node')) disco.items.append(item) elif i.xml_ns == XMPP_DATA_FORM_NS: disco.x = Data.from_element(i) elif c.xml_ns == XMPP_CLIENT_NS and c.xml_name == 'error': disco.error = Error.from_element(c) return disco
def to_element(e): iq = Entity.to_element(e) query = E(u'query', namespace=XMPP_IBR_NS, parent=iq) if e.remove: E(u'remove', namespace=XMPP_IBR_NS, parent=query) if e.registered: E(u'registered', namespace=XMPP_IBR_NS, parent=query) for info in e.infos: E(info, namespace=XMPP_IBR_NS, parent=query, content=e.infos[info]) if e.x: Data.to_element(e.x, parent=query) return iq
def from_profile_element(e): p = Profile() for c in e.xml_children: if not isinstance(c, E): continue if c.xml_ns == XMPP_DATA_FORM_NS: p.x = Data.from_element(c) return p
def to_element(e, parent=None): c = E(u'configure', namespace=XMPP_PUBSUB_NS, parent=parent) Data.to_element(e.x, parent=c) return c