diff options
author | Tarun Gupta <tarun1995gupta@gmail.com> | 2017-07-07 21:09:17 (GMT) |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2017-07-18 15:05:09 (GMT) |
commit | f0db4d39912e773208e9db2a3da3b68ac92ba17b (patch) | |
tree | cb6a455ba7b21d2218b3f9f2040af3bf30a39004 /Swiften/Serializer/PayloadSerializers/MIXJoinSerializer.cpp | |
parent | f21c9448c5187493fd08574962d88c2db1405512 (diff) | |
download | swift-f0db4d39912e773208e9db2a3da3b68ac92ba17b.zip swift-f0db4d39912e773208e9db2a3da3b68ac92ba17b.tar.bz2 |
Add MIXUpdateSubscription Element, its Parser and Serializer
Updates MIXJoin Element list of subscriptions to an unordered_set.
Remove redundant MIXSubscribe Element.
License:
This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details.
Test-Information:
Added tests for MIXUpdateSubscription Parser and Serializer based on examples in XEP 0369, which passes.
Tested on Ubuntu 16.04 LTS.
Change-Id: Ied06269cf329b4fdffdde4ace67ebffa4089fbde
Diffstat (limited to 'Swiften/Serializer/PayloadSerializers/MIXJoinSerializer.cpp')
-rw-r--r-- | Swiften/Serializer/PayloadSerializers/MIXJoinSerializer.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/Swiften/Serializer/PayloadSerializers/MIXJoinSerializer.cpp b/Swiften/Serializer/PayloadSerializers/MIXJoinSerializer.cpp index cfb4d31..509e41e 100644 --- a/Swiften/Serializer/PayloadSerializers/MIXJoinSerializer.cpp +++ b/Swiften/Serializer/PayloadSerializers/MIXJoinSerializer.cpp @@ -7,8 +7,8 @@ #include <Swiften/Serializer/PayloadSerializers/MIXJoinSerializer.h> #include <memory> +#include <string> -#include <Swiften/Serializer/PayloadSerializers/MIXSubscribeSerializer.h> #include <Swiften/Serializer/PayloadSerializers/FormSerializer.h> #include <Swiften/Serializer/XML/XMLElement.h> #include <Swiften/Serializer/XML/XMLRawTextNode.h> @@ -32,9 +32,16 @@ std::string MIXJoinSerializer::serializePayload(std::shared_ptr<MIXJoin> payload if (payload->getJID()) { element.setAttribute("jid", *payload->getJID()); } - for (const auto& item : payload->getSubscriptions()) { - element.addNode(std::make_shared<XMLRawTextNode>(MIXSubscribeSerializer().serialize(item))); + auto subscriptionData = payload->getSubscriptions(); + std::vector<std::string> subscriptions(subscriptionData.begin(), subscriptionData.end()); + std::sort(subscriptions.begin(), subscriptions.end()); + + for (const auto& item : subscriptions) { + auto subscribeElement = std::make_shared<XMLElement>("subscribe"); + subscribeElement->setAttribute("node", item); + element.addNode(subscribeElement); } + if (payload->getForm()) { element.addNode(std::make_shared<XMLRawTextNode>(FormSerializer().serialize(payload->getForm()))); } |