#include "Swiften/Serializer/PayloadSerializers/StorageSerializer.h" #include #include "Swiften/Base/foreach.h" #include "Swiften/Serializer/XML/XMLElement.h" #include "Swiften/Serializer/XML/XMLTextNode.h" namespace Swift { StorageSerializer::StorageSerializer() : GenericPayloadSerializer() { } String StorageSerializer::serializePayload(boost::shared_ptr storage) const { XMLElement storageElement("storage", "storage:bookmarks"); foreach(const Storage::Conference& conference, storage->getConferences()) { boost::shared_ptr conferenceElement(new XMLElement("conference")); conferenceElement->setAttribute("name", conference.name); conferenceElement->setAttribute("jid", conference.jid); conferenceElement->setAttribute("autojoin", conference.autoJoin ? "1" : "0"); if (!conference.nick.isEmpty()) { boost::shared_ptr nickElement(new XMLElement("nick")); nickElement->addNode(boost::shared_ptr(new XMLTextNode(conference.nick))); conferenceElement->addNode(nickElement); } if (!conference.password.isEmpty()) { boost::shared_ptr passwordElement(new XMLElement("password")); passwordElement->addNode(boost::shared_ptr(new XMLTextNode(conference.password))); conferenceElement->addNode(passwordElement); } storageElement.addNode(conferenceElement); } return storageElement.serialize(); } }