diff --git a/include/Swiften/Serializer/PayloadSerializers/PubSubPayloadSerializer.cpp b/include/Swiften/Serializer/PayloadSerializers/PubSubPayloadSerializer.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9706d68192953f10c40dab21ae59cdc05a0f6115 --- /dev/null +++ b/include/Swiften/Serializer/PayloadSerializers/PubSubPayloadSerializer.cpp @@ -0,0 +1,36 @@ +/* + * 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 + +namespace Swift { + +PubSubPayloadSerializer::PubSubPayloadSerializer(PayloadSerializerCollection *serializers) + : GenericPayloadSerializer(), + serializers(serializers) { +} + +std::string PubSubPayloadSerializer::serializePayload(boost::shared_ptr payload) const { + XMLElement pubsub("pubsub", "http://jabber.org/protocol/pubsub"); + + if (!payload->getPayloads().empty()) { + foreach(boost::shared_ptr subPayload, payload->getPayloads()) { + PayloadSerializer* serializer = serializers->getPayloadSerializer(subPayload); + if (serializer) { + pubsub.addNode(boost::shared_ptr(new XMLRawTextNode(serializer->serialize(subPayload)))); + } + } + } + + return pubsub.serialize(); +} + +}