/* * Copyright (c) 2010 Kevin Smith * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #include #include #include #include #include #include #include namespace Swift { MUCPayloadSerializer::MUCPayloadSerializer() : GenericPayloadSerializer() { } std::string MUCPayloadSerializer::serializePayload(boost::shared_ptr muc) const { XMLElement mucElement("x", "http://jabber.org/protocol/muc"); boost::shared_ptr historyElement(new XMLElement("history")); bool history = false; if (muc->getMaxChars() >= 0) { historyElement->setAttribute("maxchars", boost::lexical_cast(muc->getMaxChars())); history = true; } if (muc->getMaxStanzas() >= 0) { historyElement->setAttribute("maxstanzas", boost::lexical_cast(muc->getMaxStanzas())); history = true; } if (muc->getSeconds() >= 0) { historyElement->setAttribute("seconds", boost::lexical_cast(muc->getSeconds())); history = true; } if (muc->getSince() != boost::posix_time::not_a_date_time) { std::string sinceString = std::string(boost::posix_time::to_iso_extended_string(muc->getSince())); String::replaceAll(sinceString, ',', "."); sinceString += "Z"; historyElement->setAttribute("since", sinceString); history = true; } if (muc->getPassword()) { std::string password = *muc->getPassword(); boost::shared_ptr passwordElement(new XMLElement("password")); passwordElement->addNode(boost::make_shared(password)); mucElement.addNode(passwordElement); } if (history) { mucElement.addNode(historyElement); } return mucElement.serialize(); } }