Files @ daeb6dfc9a9f
Branch filter:

Location: libtransport.git/include/Swiften/Serializer/PayloadSerializers/PrivilegeSerializer.cpp

Conrad Kostecki
Enable support for Qt5

Since Qt4 is EOL, we should also support libcommuni build with Qt5.
In order not to break Fedora docker builds, -DENABLE_QT4 is introduced.

When set to 'ON', support for Qt4 is being enabled,
otherwise support for Qt5 is enabled.

Signed-off-by: Conrad Kostecki <conrad@kostecki.com>
/*
 * Implements Privilege tag for XEP-0356: Privileged Entity
 * Licensed under the Simplified BSD license.
 * See Documentation/Licenses/BSD-simplified.txt for more information.
 */

#include <Swiften/Serializer/PayloadSerializers/PrivilegeSerializer.h>

#include <boost/shared_ptr.hpp>

#include <Swiften/Serializer/XML/XMLTextNode.h>
#include <Swiften/Serializer/XML/XMLRawTextNode.h>
#include <Swiften/Serializer/XML/XMLElement.h>

#ifdef SWIFTEN_SUPPORTS_FORWARDED
#include <Swiften/Elements/Forwarded.h>
#include <Swiften/Serializer/PayloadSerializers/ForwardedSerializer.h>
#else
#include <Swiften/Serializer/PayloadSerializerCollection.h>
#endif

namespace Swift {

PrivilegeSerializer::PrivilegeSerializer(PayloadSerializerCollection* serializers) : GenericPayloadSerializer<Privilege>(), serializers_(serializers) {
}

PrivilegeSerializer::~PrivilegeSerializer() {
}

std::string PrivilegeSerializer::serializePayload(SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<Privilege> payload)  const {
	if (!payload) {
		return "";
	}

	XMLElement element("privilege", "urn:xmpp:privilege:1");

	SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<Privilege::Forwarded> forwarded(payload->getForwarded());
	if (forwarded) {
		std::string forwardedStr = "";
#ifdef SWIFTEN_SUPPORTS_FORWARDED
		forwardedStr = ForwardedSerializer(serializers_).serialize(forwarded);
#else
		PayloadSerializer* serializer = serializers_->getPayloadSerializer(payload);
		if(serializer) {
			forwardedStr = serializer->serialize(payload);
		}
#endif
		element.addNode(SWIFTEN_SHRPTR_NAMESPACE::make_shared<XMLRawTextNode>(forwardedStr));
	}

	return element.serialize();
}

}