diff options
Diffstat (limited to 'Swiften/Serializer/PayloadSerializers')
3 files changed, 76 insertions, 0 deletions
diff --git a/Swiften/Serializer/PayloadSerializers/MIXDestroySerializer.cpp b/Swiften/Serializer/PayloadSerializers/MIXDestroySerializer.cpp new file mode 100644 index 0000000..a395416 --- /dev/null +++ b/Swiften/Serializer/PayloadSerializers/MIXDestroySerializer.cpp @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2017 Tarun Gupta + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#include <Swiften/Serializer/PayloadSerializers/MIXDestroySerializer.h> + +#include <memory> + +#include <Swiften/Serializer/PayloadSerializers/FormSerializer.h> +#include <Swiften/Serializer/XML/XMLElement.h> +#include <Swiften/Serializer/XML/XMLRawTextNode.h> + +using namespace Swift; + +MIXDestroySerializer::MIXDestroySerializer() { +} + +MIXDestroySerializer::~MIXDestroySerializer() { +} + +std::string MIXDestroySerializer::serializePayload(std::shared_ptr<MIXDestroy> payload) const { + if (!payload) { + return ""; + } + XMLElement element("destroy", "urn:xmpp:mix:1"); + element.setAttribute("channel", payload->getChannel()); + return element.serialize(); +} diff --git a/Swiften/Serializer/PayloadSerializers/MIXDestroySerializer.h b/Swiften/Serializer/PayloadSerializers/MIXDestroySerializer.h new file mode 100644 index 0000000..c14c0dd --- /dev/null +++ b/Swiften/Serializer/PayloadSerializers/MIXDestroySerializer.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2017 Tarun Gupta + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#pragma once + +#include <memory> + +#include <Swiften/Base/API.h> +#include <Swiften/Base/Override.h> +#include <Swiften/Elements/MIXDestroy.h> +#include <Swiften/Serializer/GenericPayloadSerializer.h> + +namespace Swift { + + class SWIFTEN_API MIXDestroySerializer : public GenericPayloadSerializer<MIXDestroy> { + public: + MIXDestroySerializer(); + virtual ~MIXDestroySerializer(); + + virtual std::string serializePayload(std::shared_ptr<MIXDestroy>) const SWIFTEN_OVERRIDE; + }; +} diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/MIXDestroySerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/MIXDestroySerializerTest.cpp new file mode 100644 index 0000000..e9cfa8b --- /dev/null +++ b/Swiften/Serializer/PayloadSerializers/UnitTest/MIXDestroySerializerTest.cpp @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2017 Tarun Gupta + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#include <gtest/gtest.h> + +#include <Swiften/Serializer/PayloadSerializers/MIXDestroySerializer.h> + +using namespace Swift; + +TEST(MIXDestroySerializerTest, XEP0369_Example31) { + MIXDestroySerializer testling; + + auto destroy = std::make_shared<MIXDestroy>(); + destroy->setChannel(std::string("coven")); + + std::string expectedResult = "<destroy channel=\"coven\" xmlns=\"urn:xmpp:mix:1\"/>"; + ASSERT_EQ(expectedResult, testling.serialize(destroy)); +} |