diff --git a/include/Swiften/Serializer/PayloadSerializers/PubSubSubscriptionPayloadSerializer.cpp b/include/Swiften/Serializer/PayloadSerializers/PubSubSubscriptionPayloadSerializer.cpp new file mode 100644 index 0000000000000000000000000000000000000000..02a634a1b6d9a28e3780ecf134bf6e76ff15a0f3 --- /dev/null +++ b/include/Swiften/Serializer/PayloadSerializers/PubSubSubscriptionPayloadSerializer.cpp @@ -0,0 +1,49 @@ +/* + * 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 { + +PubSubSubscriptionPayloadSerializer::PubSubSubscriptionPayloadSerializer() + : GenericPayloadSerializer() { +} + +std::string PubSubSubscriptionPayloadSerializer::serializePayload(boost::shared_ptr payload) const { + XMLElement subscription("subscription"); + + if (!payload->getJID().isValid()) { + subscription.setAttribute("jid", payload->getJID().toBare().toString()); + } + + if (!payload->getNode().empty()) { + subscription.setAttribute("node", payload->getNode()); + } + + switch (payload->getType()) { + case PubSubSubscriptionPayload::None: + subscription.setAttribute("subscription", "none"); + break; + case PubSubSubscriptionPayload::Subscribed: + subscription.setAttribute("subscription", "subscribed"); + break; + case PubSubSubscriptionPayload::Unconfigured: + subscription.setAttribute("subscription", "unconfigured"); + break; + case PubSubSubscriptionPayload::Pending: + subscription.setAttribute("subscription", "pending"); + break; + } + + return subscription.serialize(); +} + +}