/* * Copyright (c) 2011 Jan Kaluza * Licensed under the Simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #include #include #include #include #include #include #include namespace Swift { RosterItemExchangeSerializer::RosterItemExchangeSerializer() : GenericPayloadSerializer() { } std::string RosterItemExchangeSerializer::serializePayload(boost::shared_ptr roster) const { XMLElement queryElement("x", "http://jabber.org/protocol/rosterx"); foreach(const RosterItemExchangePayload::Item& item, roster->getItems()) { boost::shared_ptr itemElement(new XMLElement("item")); itemElement->setAttribute("jid", item.getJID()); itemElement->setAttribute("name", item.getName()); switch (item.getAction()) { case RosterItemExchangePayload::Item::Add: itemElement->setAttribute("action", "add"); break; case RosterItemExchangePayload::Item::Modify: itemElement->setAttribute("action", "modify"); break; case RosterItemExchangePayload::Item::Delete: itemElement->setAttribute("action", "delete"); break; } foreach(const std::string& group, item.getGroups()) { boost::shared_ptr groupElement(new XMLElement("group")); groupElement->addNode(boost::make_shared(group)); itemElement->addNode(groupElement); } queryElement.addNode(itemElement); } return queryElement.serialize(); } }