summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Smith <git@kismith.co.uk>2014-08-29 12:36:17 (GMT)
committerKevin Smith <git@kismith.co.uk>2014-09-17 09:52:35 (GMT)
commit5bb5e4eb3024dfba3ae2b5041b90472ee478aebe (patch)
tree6e3c47ba3236a65fa0a49eb6595f3e09db31bb3e
parentfc2714bf30ddd447405082ba4f8fa93bda369a6f (diff)
downloadswift-contrib-5bb5e4eb3024dfba3ae2b5041b90472ee478aebe.zip
swift-contrib-5bb5e4eb3024dfba3ae2b5041b90472ee478aebe.tar.bz2
Handle Isode's IQ Forwarding
Change-Id: I3b358e6a60f1ff546f2e578b6e0a54072b4c6da5
-rw-r--r--Sluift/ElementConvertors/ElementConvertors.ipp4
-rw-r--r--Sluift/ElementConvertors/IsodeIQDelegationConvertor.cpp52
-rw-r--r--Sluift/ElementConvertors/IsodeIQDelegationConvertor.h29
-rw-r--r--Sluift/ElementConvertors/SConscript3
-rw-r--r--Swiften/Elements/IsodeIQDelegation.cpp15
-rw-r--r--Swiften/Elements/IsodeIQDelegation.h36
-rw-r--r--Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp113
-rw-r--r--Swiften/Parser/PayloadParsers/IsodeIQDelegationParser.cpp59
-rw-r--r--Swiften/Parser/PayloadParsers/IsodeIQDelegationParser.h34
-rw-r--r--Swiften/Parser/SConscript1
-rw-r--r--Swiften/SConscript2
-rw-r--r--Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.cpp105
-rw-r--r--Swiften/Serializer/PayloadSerializers/IsodeIQDelegationSerializer.cpp33
-rw-r--r--Swiften/Serializer/PayloadSerializers/IsodeIQDelegationSerializer.h31
14 files changed, 409 insertions, 108 deletions
diff --git a/Sluift/ElementConvertors/ElementConvertors.ipp b/Sluift/ElementConvertors/ElementConvertors.ipp
index 234ed66..ef2416c 100644
--- a/Sluift/ElementConvertors/ElementConvertors.ipp
+++ b/Sluift/ElementConvertors/ElementConvertors.ipp
@@ -1,85 +1,87 @@
/*
- * Copyright (c) 2013-2014 Remko Tronçon
+ * Copyright (c) 2013-2014 Remko Tronçon and Kevin Smith
* Licensed under the GNU General Public License v3.
* See Documentation/Licenses/GPLv3.txt for more information.
*/
#include <Sluift/ElementConvertors/PubSubRetractConvertor.h>
#include <Sluift/ElementConvertors/PubSubAffiliationsConvertor.h>
#include <Sluift/ElementConvertors/PubSubPublishConvertor.h>
#include <Sluift/ElementConvertors/PubSubItemsConvertor.h>
#include <Sluift/ElementConvertors/PubSubOwnerRedirectConvertor.h>
#include <Sluift/ElementConvertors/PubSubEventRedirectConvertor.h>
#include <Sluift/ElementConvertors/UserTuneConvertor.h>
#include <Sluift/ElementConvertors/PubSubConfigureConvertor.h>
#include <Sluift/ElementConvertors/PubSubEventDisassociateConvertor.h>
#include <Sluift/ElementConvertors/PubSubOwnerAffiliationsConvertor.h>
#include <Sluift/ElementConvertors/PubSubOwnerConfigureConvertor.h>
#include <Sluift/ElementConvertors/UserLocationConvertor.h>
#include <Sluift/ElementConvertors/PubSubSubscribeOptionsConvertor.h>
#include <Sluift/ElementConvertors/PubSubOwnerSubscriptionsConvertor.h>
#include <Sluift/ElementConvertors/PubSubDefaultConvertor.h>
#include <Sluift/ElementConvertors/PubSubEventCollectionConvertor.h>
#include <Sluift/ElementConvertors/PubSubEventSubscriptionConvertor.h>
#include <Sluift/ElementConvertors/PubSubEventRetractConvertor.h>
#include <Sluift/ElementConvertors/PubSubItemConvertor.h>
#include <Sluift/ElementConvertors/PubSubUnsubscribeConvertor.h>
#include <Sluift/ElementConvertors/PubSubEventDeleteConvertor.h>
#include <Sluift/ElementConvertors/PubSubCreateConvertor.h>
#include <Sluift/ElementConvertors/PubSubOwnerPurgeConvertor.h>
#include <Sluift/ElementConvertors/PubSubEventItemsConvertor.h>
#include <Sluift/ElementConvertors/PubSubOptionsConvertor.h>
#include <Sluift/ElementConvertors/PubSubEventItemConvertor.h>
#include <Sluift/ElementConvertors/PubSubOwnerSubscriptionConvertor.h>
+#include <Sluift/ElementConvertors/IsodeIQDelegationConvertor.h>
#include <Sluift/ElementConvertors/PubSubOwnerAffiliationConvertor.h>
#include <Sluift/ElementConvertors/PubSubEventPurgeConvertor.h>
#include <Sluift/ElementConvertors/PubSubAffiliationConvertor.h>
#include <Sluift/ElementConvertors/PubSubSubscribeConvertor.h>
#include <Sluift/ElementConvertors/PubSubOwnerDeleteConvertor.h>
#include <Sluift/ElementConvertors/PubSubOwnerDefaultConvertor.h>
#include <Sluift/ElementConvertors/PubSubSubscriptionsConvertor.h>
#include <Sluift/ElementConvertors/PubSubEventAssociateConvertor.h>
#include <Sluift/ElementConvertors/PubSubSubscriptionConvertor.h>
#include <Sluift/ElementConvertors/SecurityLabelConvertor.h>
#include <Sluift/ElementConvertors/PubSubEventConfigurationConvertor.h>
void LuaElementConvertors::registerConvertors() {
convertors.push_back(boost::make_shared<PubSubRetractConvertor>(this));
convertors.push_back(boost::make_shared<PubSubAffiliationsConvertor>(this));
convertors.push_back(boost::make_shared<PubSubPublishConvertor>(this));
convertors.push_back(boost::make_shared<PubSubItemsConvertor>(this));
convertors.push_back(boost::make_shared<PubSubOwnerRedirectConvertor>(this));
convertors.push_back(boost::make_shared<PubSubEventRedirectConvertor>(this));
convertors.push_back(boost::make_shared<UserTuneConvertor>(this));
convertors.push_back(boost::make_shared<PubSubConfigureConvertor>(this));
convertors.push_back(boost::make_shared<PubSubEventDisassociateConvertor>(this));
convertors.push_back(boost::make_shared<PubSubOwnerAffiliationsConvertor>(this));
convertors.push_back(boost::make_shared<PubSubOwnerConfigureConvertor>(this));
convertors.push_back(boost::make_shared<UserLocationConvertor>(this));
convertors.push_back(boost::make_shared<PubSubSubscribeOptionsConvertor>(this));
convertors.push_back(boost::make_shared<PubSubOwnerSubscriptionsConvertor>(this));
convertors.push_back(boost::make_shared<PubSubDefaultConvertor>(this));
convertors.push_back(boost::make_shared<PubSubEventCollectionConvertor>(this));
convertors.push_back(boost::make_shared<PubSubEventSubscriptionConvertor>(this));
convertors.push_back(boost::make_shared<PubSubEventRetractConvertor>(this));
convertors.push_back(boost::make_shared<PubSubItemConvertor>(this));
convertors.push_back(boost::make_shared<PubSubUnsubscribeConvertor>(this));
convertors.push_back(boost::make_shared<PubSubEventDeleteConvertor>(this));
convertors.push_back(boost::make_shared<PubSubCreateConvertor>(this));
convertors.push_back(boost::make_shared<PubSubOwnerPurgeConvertor>(this));
convertors.push_back(boost::make_shared<PubSubEventItemsConvertor>(this));
convertors.push_back(boost::make_shared<PubSubOptionsConvertor>(this));
convertors.push_back(boost::make_shared<PubSubEventItemConvertor>(this));
convertors.push_back(boost::make_shared<PubSubOwnerSubscriptionConvertor>(this));
+ convertors.push_back(boost::make_shared<IsodeIQDelegationConvertor>(this));
convertors.push_back(boost::make_shared<PubSubOwnerAffiliationConvertor>(this));
convertors.push_back(boost::make_shared<PubSubEventPurgeConvertor>(this));
convertors.push_back(boost::make_shared<PubSubAffiliationConvertor>(this));
convertors.push_back(boost::make_shared<PubSubSubscribeConvertor>(this));
convertors.push_back(boost::make_shared<PubSubOwnerDeleteConvertor>(this));
convertors.push_back(boost::make_shared<PubSubOwnerDefaultConvertor>(this));
convertors.push_back(boost::make_shared<PubSubSubscriptionsConvertor>(this));
convertors.push_back(boost::make_shared<PubSubEventAssociateConvertor>(this));
convertors.push_back(boost::make_shared<PubSubSubscriptionConvertor>(this));
convertors.push_back(boost::make_shared<SecurityLabelConvertor>(this));
convertors.push_back(boost::make_shared<PubSubEventConfigurationConvertor>(this));
}
diff --git a/Sluift/ElementConvertors/IsodeIQDelegationConvertor.cpp b/Sluift/ElementConvertors/IsodeIQDelegationConvertor.cpp
new file mode 100644
index 0000000..889c32b
--- /dev/null
+++ b/Sluift/ElementConvertors/IsodeIQDelegationConvertor.cpp
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2014 Remko Tronçon and Kevin Smith
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#include <Sluift/ElementConvertors/IsodeIQDelegationConvertor.h>
+
+#include <lua.hpp>
+#include <boost/smart_ptr/make_shared.hpp>
+
+
+#include <Sluift/LuaElementConvertors.h>
+
+#pragma clang diagnostic ignored "-Wunused-private-field"
+
+using namespace Swift;
+
+IsodeIQDelegationConvertor::IsodeIQDelegationConvertor(LuaElementConvertors* convertors) :
+ GenericLuaElementConvertor<IsodeIQDelegation>("isode_iq_delegation"),
+ convertors(convertors) {
+}
+
+IsodeIQDelegationConvertor::~IsodeIQDelegationConvertor() {
+}
+
+boost::shared_ptr<IsodeIQDelegation> IsodeIQDelegationConvertor::doConvertFromLua(lua_State* L) {
+ boost::shared_ptr<IsodeIQDelegation> result = boost::make_shared<IsodeIQDelegation>();
+ lua_getfield(L, -1, "forward");
+ if (!lua_isnil(L, -1)) {
+ if (boost::shared_ptr<Forwarded> payload = boost::dynamic_pointer_cast<Forwarded>(convertors->convertFromLuaUntyped(L, -1, "forwarded"))) {
+ result->setForward(payload);
+ }
+ }
+ lua_pop(L, 1);
+ return result;
+}
+
+void IsodeIQDelegationConvertor::doConvertToLua(lua_State* L, boost::shared_ptr<IsodeIQDelegation> payload) {
+ lua_createtable(L, 0, 0);
+ if (convertors->convertToLuaUntyped(L, payload->getForward()) > 0) {
+ lua_setfield(L, -2, "forward");
+ }
+}
+
+boost::optional<LuaElementConvertor::Documentation> IsodeIQDelegationConvertor::getDocumentation() const {
+ return Documentation(
+ "IsodeIQDelegation",
+ "This table has the following fields:\n\n"
+ "- `forward`: @{Forwarded}\n"
+ );
+}
diff --git a/Sluift/ElementConvertors/IsodeIQDelegationConvertor.h b/Sluift/ElementConvertors/IsodeIQDelegationConvertor.h
new file mode 100644
index 0000000..079423d
--- /dev/null
+++ b/Sluift/ElementConvertors/IsodeIQDelegationConvertor.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2014 Remko Tronçon and Kevin Smith
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+
+#include <Sluift/GenericLuaElementConvertor.h>
+#include <Swiften/Elements/IsodeIQDelegation.h>
+
+namespace Swift {
+ class LuaElementConvertors;
+
+ class IsodeIQDelegationConvertor : public GenericLuaElementConvertor<IsodeIQDelegation> {
+ public:
+ IsodeIQDelegationConvertor(LuaElementConvertors* convertors);
+ virtual ~IsodeIQDelegationConvertor();
+
+ virtual boost::shared_ptr<IsodeIQDelegation> doConvertFromLua(lua_State*) SWIFTEN_OVERRIDE;
+ virtual void doConvertToLua(lua_State*, boost::shared_ptr<IsodeIQDelegation>) SWIFTEN_OVERRIDE;
+ virtual boost::optional<Documentation> getDocumentation() const SWIFTEN_OVERRIDE;
+
+ private:
+ LuaElementConvertors* convertors;
+ };
+}
diff --git a/Sluift/ElementConvertors/SConscript b/Sluift/ElementConvertors/SConscript
index b9bfc22..5ff5379 100644
--- a/Sluift/ElementConvertors/SConscript
+++ b/Sluift/ElementConvertors/SConscript
@@ -16,38 +16,39 @@ convertors = [
env.File("UserLocationConvertor.cpp"),
env.File("PubSubSubscribeOptionsConvertor.cpp"),
env.File("PubSubOwnerSubscriptionsConvertor.cpp"),
env.File("PubSubDefaultConvertor.cpp"),
env.File("PubSubEventCollectionConvertor.cpp"),
env.File("PubSubEventSubscriptionConvertor.cpp"),
env.File("PubSubEventRetractConvertor.cpp"),
env.File("PubSubItemConvertor.cpp"),
env.File("PubSubUnsubscribeConvertor.cpp"),
env.File("PubSubEventDeleteConvertor.cpp"),
env.File("PubSubCreateConvertor.cpp"),
env.File("PubSubOwnerPurgeConvertor.cpp"),
env.File("PubSubEventItemsConvertor.cpp"),
env.File("PubSubOptionsConvertor.cpp"),
env.File("PubSubEventItemConvertor.cpp"),
env.File("PubSubOwnerSubscriptionConvertor.cpp"),
env.File("PubSubOwnerAffiliationConvertor.cpp"),
env.File("PubSubEventPurgeConvertor.cpp"),
env.File("PubSubAffiliationConvertor.cpp"),
env.File("PubSubSubscribeConvertor.cpp"),
env.File("PubSubOwnerDeleteConvertor.cpp"),
env.File("PubSubOwnerDefaultConvertor.cpp"),
env.File("PubSubSubscriptionsConvertor.cpp"),
env.File("PubSubEventAssociateConvertor.cpp"),
env.File("PubSubSubscriptionConvertor.cpp"),
env.File("SecurityLabelConvertor.cpp"),
env.File("PubSubEventConfigurationConvertor.cpp"),
env.File("IQConvertor.cpp"),
env.File("PresenceConvertor.cpp"),
env.File("MessageConvertor.cpp"),
env.File("ResultSetConvertor.cpp"),
env.File("ForwardedConvertor.cpp"),
env.File("MAMResultConvertor.cpp"),
env.File("MAMQueryConvertor.cpp"),
env.File("MAMArchivedConvertor.cpp"),
- env.File("SubjectConvertor.cpp")
+ env.File("SubjectConvertor.cpp"),
+ env.File("IsodeIQDelegationConvertor.cpp")
]
Return('convertors')
diff --git a/Swiften/Elements/IsodeIQDelegation.cpp b/Swiften/Elements/IsodeIQDelegation.cpp
new file mode 100644
index 0000000..ce13e2a
--- /dev/null
+++ b/Swiften/Elements/IsodeIQDelegation.cpp
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2014 Remko Tronçon and Kevin Smith
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#include <Swiften/Elements/IsodeIQDelegation.h>
+
+using namespace Swift;
+
+IsodeIQDelegation::IsodeIQDelegation() {
+}
+
+IsodeIQDelegation::~IsodeIQDelegation() {
+}
diff --git a/Swiften/Elements/IsodeIQDelegation.h b/Swiften/Elements/IsodeIQDelegation.h
new file mode 100644
index 0000000..7935a4f
--- /dev/null
+++ b/Swiften/Elements/IsodeIQDelegation.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2014 Remko Tronçon and Kevin Smith
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/Payload.h>
+#include <boost/shared_ptr.hpp>
+
+#include <Swiften/Elements/Forwarded.h>
+
+namespace Swift {
+ class SWIFTEN_API IsodeIQDelegation : public Payload {
+ public:
+
+ IsodeIQDelegation();
+
+ virtual ~IsodeIQDelegation();
+
+ boost::shared_ptr<Forwarded> getForward() const {
+ return forward;
+ }
+
+ void setForward(boost::shared_ptr<Forwarded> value) {
+ this->forward = value ;
+ }
+
+
+ private:
+ boost::shared_ptr<Forwarded> forward;
+ };
+}
diff --git a/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp b/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp
index 4541b3b..49dd1e3 100644
--- a/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp
+++ b/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp
@@ -1,118 +1,122 @@
/*
* Copyright (c) 2010-2014 Remko Tronçon
* Licensed under the GNU General Public License v3.
* See Documentation/Licenses/GPLv3.txt for more information.
*/
#include <Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.h>
+
#include <Swiften/Base/foreach.h>
+
+#include <Swiften/Elements/BlockListPayload.h>
#include <Swiften/Elements/BlockPayload.h>
#include <Swiften/Elements/UnblockPayload.h>
-#include <Swiften/Elements/BlockListPayload.h>
+
#include <Swiften/Parser/GenericPayloadParser.h>
#include <Swiften/Parser/GenericPayloadParserFactory.h>
#include <Swiften/Parser/GenericPayloadParserFactory2.h>
#include <Swiften/Parser/PayloadParserFactory.h>
-#include <Swiften/Parser/PayloadParsers/ErrorParser.h>
-#include <Swiften/Parser/PayloadParsers/ErrorParserFactory.h>
-#include <Swiften/Parser/PayloadParsers/BodyParser.h>
#include <Swiften/Parser/PayloadParsers/BlockParser.h>
-#include <Swiften/Parser/PayloadParsers/SubjectParser.h>
+#include <Swiften/Parser/PayloadParsers/BodyParser.h>
+#include <Swiften/Parser/PayloadParsers/BytestreamsParser.h>
+#include <Swiften/Parser/PayloadParsers/CapsInfoParser.h>
#include <Swiften/Parser/PayloadParsers/ChatStateParserFactory.h>
-#include <Swiften/Parser/PayloadParsers/PriorityParser.h>
-#include <Swiften/Parser/PayloadParsers/ResourceBindParser.h>
-#include <Swiften/Parser/PayloadParsers/StartSessionParser.h>
-#include <Swiften/Parser/PayloadParsers/StatusParser.h>
-#include <Swiften/Parser/PayloadParsers/StatusShowParser.h>
-#include <Swiften/Parser/PayloadParsers/RosterItemExchangeParser.h>
-#include <Swiften/Parser/PayloadParsers/RosterParser.h>
-#include <Swiften/Parser/PayloadParsers/SoftwareVersionParser.h>
-#include <Swiften/Parser/PayloadParsers/StorageParser.h>
+#include <Swiften/Parser/PayloadParsers/CommandParser.h>
+#include <Swiften/Parser/PayloadParsers/DelayParser.h>
+#include <Swiften/Parser/PayloadParsers/DeliveryReceiptParserFactory.h>
+#include <Swiften/Parser/PayloadParsers/DeliveryReceiptRequestParserFactory.h>
#include <Swiften/Parser/PayloadParsers/DiscoInfoParser.h>
#include <Swiften/Parser/PayloadParsers/DiscoItemsParser.h>
-#include <Swiften/Parser/PayloadParsers/CapsInfoParser.h>
-#include <Swiften/Parser/PayloadParsers/SecurityLabelParserFactory.h>
-#include <Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.h>
+#include <Swiften/Parser/PayloadParsers/ErrorParser.h>
+#include <Swiften/Parser/PayloadParsers/ErrorParserFactory.h>
#include <Swiften/Parser/PayloadParsers/FormParserFactory.h>
-#include <Swiften/Parser/PayloadParsers/CommandParser.h>
-#include <Swiften/Parser/PayloadParsers/InBandRegistrationPayloadParser.h>
-#include <Swiften/Parser/PayloadParsers/SearchPayloadParser.h>
-#include <Swiften/Parser/PayloadParsers/StreamInitiationParser.h>
-#include <Swiften/Parser/PayloadParsers/BytestreamsParser.h>
+#include <Swiften/Parser/PayloadParsers/ForwardedParser.h>
#include <Swiften/Parser/PayloadParsers/IBBParser.h>
-#include <Swiften/Parser/PayloadParsers/VCardUpdateParser.h>
-#include <Swiften/Parser/PayloadParsers/VCardParser.h>
-#include <Swiften/Parser/PayloadParsers/RawXMLPayloadParserFactory.h>
-#include <Swiften/Parser/PayloadParsers/PrivateStorageParserFactory.h>
-#include <Swiften/Parser/PayloadParsers/DelayParser.h>
-#include <Swiften/Parser/PayloadParsers/MUCUserPayloadParserFactory.h>
+#include <Swiften/Parser/PayloadParsers/IdleParser.h>
+#include <Swiften/Parser/PayloadParsers/InBandRegistrationPayloadParser.h>
+#include <Swiften/Parser/PayloadParsers/IsodeIQDelegationParser.h>
+#include <Swiften/Parser/PayloadParsers/JingleContentPayloadParserFactory.h>
+#include <Swiften/Parser/PayloadParsers/JingleFileTransferDescriptionParser.h>
+#include <Swiften/Parser/PayloadParsers/JingleFileTransferDescriptionParserFactory.h>
+#include <Swiften/Parser/PayloadParsers/JingleFileTransferHashParser.h>
+#include <Swiften/Parser/PayloadParsers/JingleFileTransferReceivedParser.h>
+#include <Swiften/Parser/PayloadParsers/JingleIBBTransportMethodPayloadParser.h>
+#include <Swiften/Parser/PayloadParsers/JingleIBBTransportMethodPayloadParser.h>
+#include <Swiften/Parser/PayloadParsers/JingleParserFactory.h>
+#include <Swiften/Parser/PayloadParsers/JingleReasonParser.h>
+#include <Swiften/Parser/PayloadParsers/JingleS5BTransportMethodPayloadParser.h>
+#include <Swiften/Parser/PayloadParsers/LastParser.h>
+#include <Swiften/Parser/PayloadParsers/MAMArchivedParser.h>
+#include <Swiften/Parser/PayloadParsers/MAMQueryParser.h>
+#include <Swiften/Parser/PayloadParsers/MAMResultParser.h>
#include <Swiften/Parser/PayloadParsers/MUCAdminPayloadParser.h>
-#include <Swiften/Parser/PayloadParsers/MUCOwnerPayloadParser.h>
#include <Swiften/Parser/PayloadParsers/MUCDestroyPayloadParser.h>
#include <Swiften/Parser/PayloadParsers/MUCInvitationPayloadParser.h>
+#include <Swiften/Parser/PayloadParsers/MUCOwnerPayloadParser.h>
#include <Swiften/Parser/PayloadParsers/MUCOwnerPayloadParserFactory.h>
+#include <Swiften/Parser/PayloadParsers/MUCUserPayloadParserFactory.h>
#include <Swiften/Parser/PayloadParsers/NicknameParser.h>
+#include <Swiften/Parser/PayloadParsers/PriorityParser.h>
+#include <Swiften/Parser/PayloadParsers/PrivateStorageParserFactory.h>
+#include <Swiften/Parser/PayloadParsers/PubSubErrorParserFactory.h>
+#include <Swiften/Parser/PayloadParsers/PubSubEventParser.h>
+#include <Swiften/Parser/PayloadParsers/PubSubOwnerPubSubParser.h>
+#include <Swiften/Parser/PayloadParsers/PubSubParser.h>
+#include <Swiften/Parser/PayloadParsers/RawXMLPayloadParserFactory.h>
#include <Swiften/Parser/PayloadParsers/ReplaceParser.h>
-#include <Swiften/Parser/PayloadParsers/LastParser.h>
-#include <Swiften/Parser/PayloadParsers/JingleParserFactory.h>
-#include <Swiften/Parser/PayloadParsers/JingleReasonParser.h>
-#include <Swiften/Parser/PayloadParsers/JingleContentPayloadParserFactory.h>
-#include <Swiften/Parser/PayloadParsers/JingleIBBTransportMethodPayloadParser.h>
-#include <Swiften/Parser/PayloadParsers/JingleS5BTransportMethodPayloadParser.h>
-#include <Swiften/Parser/PayloadParsers/JingleFileTransferDescriptionParserFactory.h>
-#include <Swiften/Parser/PayloadParsers/StreamInitiationFileInfoParser.h>
-#include <Swiften/Parser/PayloadParsers/JingleFileTransferReceivedParser.h>
-#include <Swiften/Parser/PayloadParsers/JingleFileTransferHashParser.h>
+#include <Swiften/Parser/PayloadParsers/ResourceBindParser.h>
+#include <Swiften/Parser/PayloadParsers/ResultSetParser.h>
+#include <Swiften/Parser/PayloadParsers/RosterItemExchangeParser.h>
+#include <Swiften/Parser/PayloadParsers/RosterParser.h>
#include <Swiften/Parser/PayloadParsers/S5BProxyRequestParser.h>
-#include <Swiften/Parser/PayloadParsers/JingleIBBTransportMethodPayloadParser.h>
-#include <Swiften/Parser/PayloadParsers/JingleFileTransferDescriptionParser.h>
-#include <Swiften/Parser/PayloadParsers/DeliveryReceiptParserFactory.h>
-#include <Swiften/Parser/PayloadParsers/DeliveryReceiptRequestParserFactory.h>
-#include <Swiften/Parser/PayloadParsers/WhiteboardParser.h>
-#include <Swiften/Parser/PayloadParsers/IdleParser.h>
-#include <Swiften/Parser/PayloadParsers/PubSubParser.h>
-#include <Swiften/Parser/PayloadParsers/PubSubOwnerPubSubParser.h>
-#include <Swiften/Parser/PayloadParsers/PubSubEventParser.h>
-#include <Swiften/Parser/PayloadParsers/PubSubErrorParserFactory.h>
+#include <Swiften/Parser/PayloadParsers/SearchPayloadParser.h>
+#include <Swiften/Parser/PayloadParsers/SecurityLabelParserFactory.h>
+#include <Swiften/Parser/PayloadParsers/SecurityLabelsCatalogParser.h>
+#include <Swiften/Parser/PayloadParsers/SoftwareVersionParser.h>
+#include <Swiften/Parser/PayloadParsers/StartSessionParser.h>
+#include <Swiften/Parser/PayloadParsers/StatusParser.h>
+#include <Swiften/Parser/PayloadParsers/StatusShowParser.h>
+#include <Swiften/Parser/PayloadParsers/StorageParser.h>
+#include <Swiften/Parser/PayloadParsers/StreamInitiationFileInfoParser.h>
+#include <Swiften/Parser/PayloadParsers/StreamInitiationParser.h>
+#include <Swiften/Parser/PayloadParsers/SubjectParser.h>
#include <Swiften/Parser/PayloadParsers/UserLocationParser.h>
#include <Swiften/Parser/PayloadParsers/UserTuneParser.h>
-#include <Swiften/Parser/PayloadParsers/ResultSetParser.h>
-#include <Swiften/Parser/PayloadParsers/ForwardedParser.h>
-#include <Swiften/Parser/PayloadParsers/MAMResultParser.h>
-#include <Swiften/Parser/PayloadParsers/MAMQueryParser.h>
-#include <Swiften/Parser/PayloadParsers/MAMArchivedParser.h>
+#include <Swiften/Parser/PayloadParsers/VCardParser.h>
+#include <Swiften/Parser/PayloadParsers/VCardUpdateParser.h>
+#include <Swiften/Parser/PayloadParsers/WhiteboardParser.h>
using namespace boost;
namespace Swift {
FullPayloadParserFactoryCollection::FullPayloadParserFactoryCollection() {
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<IBBParser> >("", "http://jabber.org/protocol/ibb"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<StatusShowParser> >("show"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<StatusParser> >("status"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<ReplaceParser> >("replace", "http://swift.im/protocol/replace"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<ReplaceParser> >("replace", "urn:xmpp:message-correct:0"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<LastParser> >("query", "jabber:iq:last"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<BodyParser> >("body"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<SubjectParser> >("subject"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<PriorityParser> >("priority"));
factories_.push_back(boost::make_shared<ErrorParserFactory>(this));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<DelayParser> >("delay", "urn:xmpp:delay"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<SoftwareVersionParser> >("query", "jabber:iq:version"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<StorageParser> >("storage", "storage:bookmarks"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<RosterItemExchangeParser> >("x", "http://jabber.org/protocol/rosterx"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<RosterParser> >("query", "jabber:iq:roster"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<DiscoInfoParser> >("query", "http://jabber.org/protocol/disco#info"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<DiscoItemsParser> >("query", "http://jabber.org/protocol/disco#items"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<CapsInfoParser> >("c", "http://jabber.org/protocol/caps"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<ResourceBindParser> >("bind", "urn:ietf:params:xml:ns:xmpp-bind"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<StartSessionParser> >("session", "urn:ietf:params:xml:ns:xmpp-session"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<BlockParser<BlockPayload> > >("block", "urn:xmpp:blocking"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<BlockParser<BlockListPayload> > >("blocklist", "urn:xmpp:blocking"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<BlockParser<UnblockPayload> > >("unblock", "urn:xmpp:blocking"));
factories_.push_back(boost::make_shared<SecurityLabelParserFactory>());
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<SecurityLabelsCatalogParser> >("catalog", "urn:xmpp:sec-label:catalog:2"));
factories_.push_back(boost::make_shared<FormParserFactory>());
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<CommandParser> >("command", "http://jabber.org/protocol/commands"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<InBandRegistrationPayloadParser> >("query", "jabber:iq:register"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<SearchPayloadParser> >("query", "jabber:iq:search"));
@@ -122,52 +126,53 @@ FullPayloadParserFactoryCollection::FullPayloadParserFactoryCollection() {
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<VCardParser> >("vCard", "vcard-temp"));
factories_.push_back(boost::make_shared<PrivateStorageParserFactory>(this));
factories_.push_back(boost::make_shared<ChatStateParserFactory>());
factories_.push_back(boost::make_shared<MUCUserPayloadParserFactory>(this));
factories_.push_back(boost::make_shared<MUCOwnerPayloadParserFactory>(this));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<MUCInvitationPayloadParser> >("x", "jabber:x:conference"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<MUCAdminPayloadParser> >("query", "http://jabber.org/protocol/muc#admin"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<MUCDestroyPayloadParser> >("destroy", "http://jabber.org/protocol/muc#user"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<MUCDestroyPayloadParser> >("destroy", "http://jabber.org/protocol/muc#owner"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<NicknameParser> >("nick", "http://jabber.org/protocol/nick"));
factories_.push_back(boost::make_shared<JingleParserFactory>(this));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<JingleReasonParser> >("reason", "urn:xmpp:jingle:1"));
factories_.push_back(boost::make_shared<JingleContentPayloadParserFactory>(this));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<JingleIBBTransportMethodPayloadParser> >("transport", "urn:xmpp:jingle:transports:ibb:1"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<JingleS5BTransportMethodPayloadParser> >("transport", "urn:xmpp:jingle:transports:s5b:1"));
factories_.push_back(boost::make_shared<JingleFileTransferDescriptionParserFactory>(this));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<StreamInitiationFileInfoParser> >("file", "http://jabber.org/protocol/si/profile/file-transfer"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<JingleFileTransferReceivedParser> >("received", "urn:xmpp:jingle:apps:file-transfer:3"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<JingleFileTransferHashParser> >("checksum"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<S5BProxyRequestParser> >("query", "http://jabber.org/protocol/bytestreams"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<WhiteboardParser> >("wb", "http://swift.im/whiteboard"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<UserLocationParser> >("geoloc", "http://jabber.org/protocol/geoloc"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<UserTuneParser> >("tune", "http://jabber.org/protocol/tune"));
factories_.push_back(boost::make_shared<DeliveryReceiptParserFactory>());
factories_.push_back(boost::make_shared<DeliveryReceiptRequestParserFactory>());
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<IdleParser> >("idle", "urn:xmpp:idle:1"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory2<PubSubParser> >("pubsub", "http://jabber.org/protocol/pubsub", this));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory2<PubSubOwnerPubSubParser> >("pubsub", "http://jabber.org/protocol/pubsub#owner", this));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory2<PubSubEventParser> >("event", "http://jabber.org/protocol/pubsub#event", this));
factories_.push_back(boost::make_shared<PubSubErrorParserFactory>());
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<ResultSetParser> >("set", "http://jabber.org/protocol/rsm"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory2<ForwardedParser> >("forwarded", "urn:xmpp:forward:0", this));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory2<MAMResultParser> >("result", "urn:xmpp:mam:0", this));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<MAMQueryParser> >("query", "urn:xmpp:mam:0"));
factories_.push_back(boost::make_shared<GenericPayloadParserFactory<MAMArchivedParser> >("archived", "urn:xmpp:mam:0"));
+ factories_.push_back(boost::make_shared<GenericPayloadParserFactory2<IsodeIQDelegationParser> >("delegate", "http://isode.com/iq_delegation", this));
foreach(shared_ptr<PayloadParserFactory> factory, factories_) {
addFactory(factory.get());
}
defaultFactory_ = new RawXMLPayloadParserFactory();
setDefaultFactory(defaultFactory_);
}
FullPayloadParserFactoryCollection::~FullPayloadParserFactoryCollection() {
setDefaultFactory(NULL);
delete defaultFactory_;
foreach(shared_ptr<PayloadParserFactory> factory, factories_) {
removeFactory(factory.get());
}
}
}
diff --git a/Swiften/Parser/PayloadParsers/IsodeIQDelegationParser.cpp b/Swiften/Parser/PayloadParsers/IsodeIQDelegationParser.cpp
new file mode 100644
index 0000000..d085d09
--- /dev/null
+++ b/Swiften/Parser/PayloadParsers/IsodeIQDelegationParser.cpp
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2014 Remko Tronçon and Kevin Smith
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#pragma clang diagnostic ignored "-Wunused-private-field"
+
+#include <Swiften/Parser/PayloadParsers/IsodeIQDelegationParser.h>
+
+#include <boost/optional.hpp>
+
+
+#include <Swiften/Parser/PayloadParserFactoryCollection.h>
+#include <Swiften/Parser/PayloadParserFactory.h>
+
+
+using namespace Swift;
+
+IsodeIQDelegationParser::IsodeIQDelegationParser(PayloadParserFactoryCollection* parsers) : parsers(parsers), level(0) {
+}
+
+IsodeIQDelegationParser::~IsodeIQDelegationParser() {
+}
+
+void IsodeIQDelegationParser::handleStartElement(const std::string& element, const std::string& ns, const AttributeMap& attributes) {
+
+
+ if (level == 1) {
+ if (PayloadParserFactory* factory = parsers->getPayloadParserFactory(element, ns, attributes)) {
+ currentPayloadParser.reset(factory->createPayloadParser());
+ }
+ }
+
+ if (level >= 1 && currentPayloadParser) {
+ currentPayloadParser->handleStartElement(element, ns, attributes);
+ }
+ ++level;
+}
+
+void IsodeIQDelegationParser::handleEndElement(const std::string& element, const std::string& ns) {
+ --level;
+ if (currentPayloadParser) {
+ if (level >= 1) {
+ currentPayloadParser->handleEndElement(element, ns);
+ }
+
+ if (level == 1) {
+ getPayloadInternal()->setForward(boost::dynamic_pointer_cast<Forwarded>(currentPayloadParser->getPayload()));
+ currentPayloadParser.reset();
+ }
+ }
+}
+
+void IsodeIQDelegationParser::handleCharacterData(const std::string& data) {
+ if (level > 1 && currentPayloadParser) {
+ currentPayloadParser->handleCharacterData(data);
+ }
+}
diff --git a/Swiften/Parser/PayloadParsers/IsodeIQDelegationParser.h b/Swiften/Parser/PayloadParsers/IsodeIQDelegationParser.h
new file mode 100644
index 0000000..83bf95e
--- /dev/null
+++ b/Swiften/Parser/PayloadParsers/IsodeIQDelegationParser.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2014 Remko Tronçon and Kevin Smith
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#pragma once
+
+#include <boost/shared_ptr.hpp>
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Elements/IsodeIQDelegation.h>
+#include <Swiften/Parser/GenericPayloadParser.h>
+
+namespace Swift {
+ class PayloadParserFactoryCollection;
+ class PayloadParser;
+
+ class SWIFTEN_API IsodeIQDelegationParser : public GenericPayloadParser<IsodeIQDelegation> {
+ public:
+ IsodeIQDelegationParser(PayloadParserFactoryCollection* parsers);
+ virtual ~IsodeIQDelegationParser();
+
+ virtual void handleStartElement(const std::string& element, const std::string&, const AttributeMap& attributes) SWIFTEN_OVERRIDE;
+ virtual void handleEndElement(const std::string& element, const std::string&) SWIFTEN_OVERRIDE;
+ virtual void handleCharacterData(const std::string& data) SWIFTEN_OVERRIDE;
+
+ private:
+ PayloadParserFactoryCollection* parsers;
+ int level;
+ boost::shared_ptr<PayloadParser> currentPayloadParser;
+ };
+}
diff --git a/Swiften/Parser/SConscript b/Swiften/Parser/SConscript
index 056862f..e748320 100644
--- a/Swiften/Parser/SConscript
+++ b/Swiften/Parser/SConscript
@@ -50,63 +50,64 @@ sources = [
"PayloadParsers/RosterItemExchangeParser.cpp",
"PayloadParsers/RosterParser.cpp",
"PayloadParsers/SecurityLabelParser.cpp",
"PayloadParsers/SecurityLabelsCatalogParser.cpp",
"PayloadParsers/SoftwareVersionParser.cpp",
"PayloadParsers/StorageParser.cpp",
"PayloadParsers/StatusParser.cpp",
"PayloadParsers/StatusShowParser.cpp",
"PayloadParsers/StreamInitiationParser.cpp",
"PayloadParsers/BytestreamsParser.cpp",
"PayloadParsers/VCardParser.cpp",
"PayloadParsers/VCardUpdateParser.cpp",
"PayloadParsers/DelayParser.cpp",
"PayloadParsers/MUCUserPayloadParser.cpp",
"PayloadParsers/MUCAdminPayloadParser.cpp",
"PayloadParsers/MUCOwnerPayloadParser.cpp",
"PayloadParsers/MUCDestroyPayloadParser.cpp",
"PayloadParsers/MUCInvitationPayloadParser.cpp",
"PayloadParsers/MUCItemParser.cpp",
"PayloadParsers/NicknameParser.cpp",
"PayloadParsers/ReplaceParser.cpp",
"PayloadParsers/LastParser.cpp",
"PayloadParsers/IdleParser.cpp",
"PayloadParsers/S5BProxyRequestParser.cpp",
"PayloadParsers/DeliveryReceiptParser.cpp",
"PayloadParsers/DeliveryReceiptRequestParser.cpp",
"PayloadParsers/UserLocationParser.cpp",
"PayloadParsers/UserTuneParser.cpp",
"PayloadParsers/WhiteboardParser.cpp",
"PayloadParsers/PubSubErrorParserFactory.cpp",
"PayloadParsers/ResultSetParser.cpp",
"PayloadParsers/ForwardedParser.cpp",
"PayloadParsers/MAMResultParser.cpp",
"PayloadParsers/MAMQueryParser.cpp",
"PayloadParsers/MAMArchivedParser.cpp",
+ "PayloadParsers/IsodeIQDelegationParser.cpp",
"PlatformXMLParserFactory.cpp",
"PresenceParser.cpp",
"SerializingParser.cpp",
"StanzaParser.cpp",
"StreamErrorParser.cpp",
"StreamFeaturesParser.cpp",
"StreamManagementEnabledParser.cpp",
"StreamResumeParser.cpp",
"StreamResumedParser.cpp",
"Tree/ParserElement.cpp",
"Tree/NullParserElement.cpp",
"Tree/TreeReparser.cpp",
"XMLParser.cpp",
"XMLParserClient.cpp",
"XMLParserFactory.cpp",
"XMPPParser.cpp",
"XMPPParserClient.cpp",
]
if myenv.get("HAVE_EXPAT", 0) :
myenv.Append(CPPDEFINES = "HAVE_EXPAT")
sources += ["ExpatParser.cpp"]
if myenv.get("HAVE_LIBXML", 0) :
myenv.Append(CPPDEFINES = "HAVE_LIBXML")
sources += ["LibXMLParser.cpp"]
objects = myenv.SwiftenObject(sources)
swiften_env.Append(SWIFTEN_OBJECTS = [objects])
diff --git a/Swiften/SConscript b/Swiften/SConscript
index 0314118..a37767c 100644
--- a/Swiften/SConscript
+++ b/Swiften/SConscript
@@ -115,70 +115,71 @@ if env["SCONS_STAGE"] == "build" :
"Client/Storages.cpp",
"Client/XMLBeautifier.cpp",
"Compress/ZLibCodecompressor.cpp",
"Compress/ZLibDecompressor.cpp",
"Compress/ZLibCompressor.cpp",
"Elements/DiscoInfo.cpp",
"Elements/Presence.cpp",
"Elements/Form.cpp",
"Elements/FormField.cpp",
"Elements/StreamFeatures.cpp",
"Elements/Element.cpp",
"Elements/ToplevelElement.cpp",
"Elements/IQ.cpp",
"Elements/Payload.cpp",
"Elements/PubSubPayload.cpp",
"Elements/PubSubOwnerPayload.cpp",
"Elements/PubSubEventPayload.cpp",
"Elements/RosterItemExchangePayload.cpp",
"Elements/RosterPayload.cpp",
"Elements/SecurityLabel.cpp",
"Elements/Stanza.cpp",
"Elements/StanzaAck.cpp",
"Elements/StatusShow.cpp",
"Elements/StreamManagementEnabled.cpp",
"Elements/StreamResume.cpp",
"Elements/StreamResumed.cpp",
"Elements/UserLocation.cpp",
"Elements/UserTune.cpp",
"Elements/VCard.cpp",
"Elements/MUCOccupant.cpp",
"Elements/ResultSet.cpp",
"Elements/Forwarded.cpp",
"Elements/MAMResult.cpp",
"Elements/MAMQuery.cpp",
"Elements/MAMArchived.cpp",
+ "Elements/IsodeIQDelegation.cpp",
"Entity/Entity.cpp",
"Entity/PayloadPersister.cpp",
"MUC/MUC.cpp",
"MUC/MUCImpl.cpp",
"MUC/MUCManager.cpp",
"MUC/MUCRegistry.cpp",
"MUC/MUCBookmarkManager.cpp",
"PubSub/PubSubManager.cpp",
"PubSub/PubSubManagerImpl.cpp",
"Queries/IQChannel.cpp",
"Queries/IQHandler.cpp",
"Queries/IQRouter.cpp",
"Queries/Request.cpp",
"Queries/Requests/GetInBandRegistrationFormRequest.cpp",
"Queries/Requests/SubmitInBandRegistrationFormRequest.cpp",
"Queries/Responders/SoftwareVersionResponder.cpp",
"Roster/RosterStorage.cpp",
"Roster/RosterMemoryStorage.cpp",
"Roster/XMPPRoster.cpp",
"Roster/XMPPRosterImpl.cpp",
"Roster/XMPPRosterController.cpp",
"Serializer/AuthRequestSerializer.cpp",
"Serializer/AuthSuccessSerializer.cpp",
"Serializer/AuthChallengeSerializer.cpp",
"Serializer/AuthResponseSerializer.cpp",
"Serializer/CompressRequestSerializer.cpp",
"Serializer/ElementSerializer.cpp",
"Serializer/MessageSerializer.cpp",
"Serializer/StreamManagementEnabledSerializer.cpp",
"Serializer/StreamResumeSerializer.cpp",
"Serializer/StreamResumedSerializer.cpp",
"Serializer/ComponentHandshakeSerializer.cpp",
"Serializer/PayloadSerializer.cpp",
"Serializer/PayloadSerializerCollection.cpp",
"Serializer/PayloadSerializers/IBBSerializer.cpp",
@@ -198,70 +199,71 @@ if env["SCONS_STAGE"] == "build" :
"Serializer/PayloadSerializers/RosterItemExchangeSerializer.cpp",
"Serializer/PayloadSerializers/RosterSerializer.cpp",
"Serializer/PayloadSerializers/SecurityLabelSerializer.cpp",
"Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.cpp",
"Serializer/PayloadSerializers/SoftwareVersionSerializer.cpp",
"Serializer/PayloadSerializers/StreamInitiationSerializer.cpp",
"Serializer/PayloadSerializers/BytestreamsSerializer.cpp",
"Serializer/PayloadSerializers/VCardSerializer.cpp",
"Serializer/PayloadSerializers/VCardUpdateSerializer.cpp",
"Serializer/PayloadSerializers/StorageSerializer.cpp",
"Serializer/PayloadSerializers/PrivateStorageSerializer.cpp",
"Serializer/PayloadSerializers/DelaySerializer.cpp",
"Serializer/PayloadSerializers/CommandSerializer.cpp",
"Serializer/PayloadSerializers/InBandRegistrationPayloadSerializer.cpp",
"Serializer/PayloadSerializers/SearchPayloadSerializer.cpp",
"Serializer/PayloadSerializers/FormSerializer.cpp",
"Serializer/PayloadSerializers/NicknameSerializer.cpp",
"Serializer/PayloadSerializers/JingleFileTransferDescriptionSerializer.cpp",
"Serializer/PayloadSerializers/JinglePayloadSerializer.cpp",
"Serializer/PayloadSerializers/JingleContentPayloadSerializer.cpp",
"Serializer/PayloadSerializers/JingleFileTransferHashSerializer.cpp",
"Serializer/PayloadSerializers/JingleFileTransferReceivedSerializer.cpp",
"Serializer/PayloadSerializers/JingleIBBTransportPayloadSerializer.cpp",
"Serializer/PayloadSerializers/JingleS5BTransportPayloadSerializer.cpp",
"Serializer/PayloadSerializers/StreamInitiationFileInfoSerializer.cpp",
"Serializer/PayloadSerializers/DeliveryReceiptSerializer.cpp",
"Serializer/PayloadSerializers/DeliveryReceiptRequestSerializer.cpp",
"Serializer/PayloadSerializers/UserLocationSerializer.cpp",
"Serializer/PayloadSerializers/UserTuneSerializer.cpp",
"Serializer/PayloadSerializers/WhiteboardSerializer.cpp",
"Serializer/PayloadSerializers/ResultSetSerializer.cpp",
"Serializer/PayloadSerializers/ForwardedSerializer.cpp",
"Serializer/PayloadSerializers/MAMResultSerializer.cpp",
"Serializer/PayloadSerializers/MAMQuerySerializer.cpp",
"Serializer/PayloadSerializers/MAMArchivedSerializer.cpp",
+ "Serializer/PayloadSerializers/IsodeIQDelegationSerializer.cpp",
"Serializer/PresenceSerializer.cpp",
"Serializer/StanzaSerializer.cpp",
"Serializer/StreamErrorSerializer.cpp",
"Serializer/StreamFeaturesSerializer.cpp",
"Serializer/XML/XMLElement.cpp",
"Serializer/XML/XMLNode.cpp",
"Serializer/XMPPSerializer.cpp",
"Session/Session.cpp",
"Session/SessionTracer.cpp",
"Session/SessionStream.cpp",
"Session/BasicSessionStream.cpp",
"Session/BOSHSessionStream.cpp",
"StringCodecs/Base64.cpp",
"StringCodecs/Hexify.cpp",
"Whiteboard/WhiteboardResponder.cpp",
"Whiteboard/WhiteboardSession.cpp",
"Whiteboard/IncomingWhiteboardSession.cpp",
"Whiteboard/OutgoingWhiteboardSession.cpp",
"Whiteboard/WhiteboardSessionManager.cpp",
"Whiteboard/WhiteboardServer.cpp",
"Whiteboard/WhiteboardClient.cpp",
"Elements/Whiteboard/WhiteboardColor.cpp",
"Whiteboard/WhiteboardTransformer.cpp",
]
elements = [
"PubSub", "PubSubAffiliations", "PubSubAffiliation", "PubSubConfigure", "PubSubCreate", "PubSubDefault",
"PubSubItems", "PubSubItem", "PubSubOptions", "PubSubPublish", "PubSubRetract", "PubSubSubscribeOptions",
"PubSubSubscribe", "PubSubSubscriptions", "PubSubSubscription", "PubSubUnsubscribe",
"PubSubEvent", "PubSubEventAssociate", "PubSubEventCollection", "PubSubEventConfiguration", "PubSubEventDelete",
"PubSubEventDisassociate", "PubSubEventItem", "PubSubEventItems", "PubSubEventPurge", "PubSubEventRedirect",
"PubSubEventRetract", "PubSubEventSubscription",
"PubSubOwnerAffiliation", "PubSubOwnerAffiliations", "PubSubOwnerConfigure", "PubSubOwnerDefault",
diff --git a/Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.cpp b/Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.cpp
index b5269d1..dcfb4ed 100644
--- a/Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.cpp
+++ b/Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.cpp
@@ -1,112 +1,112 @@
/*
* Copyright (c) 2010-2014 Remko Tronçon
* Licensed under the GNU General Public License v3.
* See Documentation/Licenses/GPLv3.txt for more information.
*/
#include <Swiften/Serializer/PayloadSerializers/FullPayloadSerializerCollection.h>
#include <Swiften/Base/foreach.h>
#include <Swiften/Elements/BlockPayload.h>
#include <Swiften/Elements/UnblockPayload.h>
#include <Swiften/Elements/BlockListPayload.h>
#include <Swiften/Serializer/PayloadSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/IBBSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/BodySerializer.h>
#include <Swiften/Serializer/PayloadSerializers/BlockSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/SubjectSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/BodySerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/BytestreamsSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.h>
#include <Swiften/Serializer/PayloadSerializers/ChatStateSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/PrioritySerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/ErrorSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/RosterSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/RosterItemExchangeSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/MUCUserPayloadSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/MUCAdminPayloadSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/MUCOwnerPayloadSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/MUCDestroyPayloadSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/MUCInvitationPayloadSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/StatusSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/StatusShowSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/CommandSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/DelaySerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/DeliveryReceiptRequestSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/DeliveryReceiptSerializer.h>
#include <Swiften/Serializer/PayloadSerializers/DiscoInfoSerializer.h>
#include <Swiften/Serializer/PayloadSerializers/DiscoItemsSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/CapsInfoSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/StartSessionSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/StreamInitiationSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/BytestreamsSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/VCardSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/RawXMLPayloadSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/StorageSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/DelaySerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/ErrorSerializer.h>
#include <Swiften/Serializer/PayloadSerializers/FormSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/CommandSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/InBandRegistrationPayloadSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/NicknameSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/SearchPayloadSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/ReplaceSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/LastSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/WhiteboardSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/UserLocationSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/UserTuneSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/IdleSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/PubSubSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/PubSubOwnerPubSubSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/PubSubEventSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/PubSubErrorSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/ResultSetSerializer.h>
#include <Swiften/Serializer/PayloadSerializers/ForwardedSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/MAMResultSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/MAMQuerySerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/MAMArchivedSerializer.h>
-
-#include <Swiften/Serializer/PayloadSerializers/StreamInitiationFileInfoSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/IBBSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/IdleSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/InBandRegistrationPayloadSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/IsodeIQDelegationSerializer.h>
#include <Swiften/Serializer/PayloadSerializers/JingleContentPayloadSerializer.h>
#include <Swiften/Serializer/PayloadSerializers/JingleFileTransferDescriptionSerializer.h>
#include <Swiften/Serializer/PayloadSerializers/JingleFileTransferHashSerializer.h>
#include <Swiften/Serializer/PayloadSerializers/JingleFileTransferReceivedSerializer.h>
#include <Swiften/Serializer/PayloadSerializers/JingleIBBTransportPayloadSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/JingleS5BTransportPayloadSerializer.h>
#include <Swiften/Serializer/PayloadSerializers/JinglePayloadSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/JingleS5BTransportPayloadSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/LastSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/MAMArchivedSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/MAMQuerySerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/MAMResultSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/MUCAdminPayloadSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/MUCDestroyPayloadSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/MUCInvitationPayloadSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/MUCOwnerPayloadSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/MUCPayloadSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/MUCUserPayloadSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/NicknameSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/PrioritySerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/PrivateStorageSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/PubSubErrorSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/PubSubEventSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/PubSubOwnerPubSubSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/PubSubSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/RawXMLPayloadSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/ReplaceSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/ResourceBindSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/ResultSetSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/RosterItemExchangeSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/RosterSerializer.h>
#include <Swiften/Serializer/PayloadSerializers/S5BProxyRequestSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/DeliveryReceiptSerializer.h>
-#include <Swiften/Serializer/PayloadSerializers/DeliveryReceiptRequestSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/SearchPayloadSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/SecurityLabelSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/SecurityLabelsCatalogSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/SoftwareVersionSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/StartSessionSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/StatusSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/StatusShowSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/StorageSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/StreamInitiationFileInfoSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/StreamInitiationSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/SubjectSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/UserLocationSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/UserTuneSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/VCardSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/VCardUpdateSerializer.h>
+#include <Swiften/Serializer/PayloadSerializers/WhiteboardSerializer.h>
namespace Swift {
FullPayloadSerializerCollection::FullPayloadSerializerCollection() {
serializers_.push_back(new IBBSerializer());
serializers_.push_back(new BodySerializer());
serializers_.push_back(new SubjectSerializer());
serializers_.push_back(new ChatStateSerializer());
serializers_.push_back(new PrioritySerializer());
serializers_.push_back(new ErrorSerializer(this));
serializers_.push_back(new RosterSerializer());
serializers_.push_back(new RosterItemExchangeSerializer());
serializers_.push_back(new MUCPayloadSerializer());
serializers_.push_back(new MUCDestroyPayloadSerializer());
serializers_.push_back(new MUCAdminPayloadSerializer());
serializers_.push_back(new MUCInvitationPayloadSerializer());
serializers_.push_back(new MUCOwnerPayloadSerializer(this));
serializers_.push_back(new MUCUserPayloadSerializer(this));
serializers_.push_back(new SoftwareVersionSerializer());
serializers_.push_back(new StatusSerializer());
serializers_.push_back(new StatusShowSerializer());
serializers_.push_back(new DiscoInfoSerializer());
serializers_.push_back(new DiscoItemsSerializer());
serializers_.push_back(new CapsInfoSerializer());
serializers_.push_back(new BlockSerializer<BlockPayload>("block"));
serializers_.push_back(new BlockSerializer<UnblockPayload>("unblock"));
serializers_.push_back(new BlockSerializer<BlockListPayload>("blocklist"));
serializers_.push_back(new ResourceBindSerializer());
serializers_.push_back(new StartSessionSerializer());
serializers_.push_back(new SecurityLabelSerializer());
serializers_.push_back(new SecurityLabelsCatalogSerializer());
serializers_.push_back(new StreamInitiationSerializer());
serializers_.push_back(new BytestreamsSerializer());
serializers_.push_back(new VCardSerializer());
serializers_.push_back(new VCardUpdateSerializer());
@@ -116,50 +116,51 @@ FullPayloadSerializerCollection::FullPayloadSerializerCollection() {
serializers_.push_back(new FormSerializer());
serializers_.push_back(new PrivateStorageSerializer(this));
serializers_.push_back(new CommandSerializer());
serializers_.push_back(new InBandRegistrationPayloadSerializer());
serializers_.push_back(new NicknameSerializer());
serializers_.push_back(new SearchPayloadSerializer());
serializers_.push_back(new ReplaceSerializer());
serializers_.push_back(new LastSerializer());
serializers_.push_back(new WhiteboardSerializer());
serializers_.push_back(new UserLocationSerializer(this));
serializers_.push_back(new UserTuneSerializer(this));
serializers_.push_back(new IdleSerializer());
serializers_.push_back(new StreamInitiationFileInfoSerializer());
serializers_.push_back(new JingleContentPayloadSerializer());
serializers_.push_back(new JingleFileTransferDescriptionSerializer());
serializers_.push_back(new JingleFileTransferHashSerializer());
serializers_.push_back(new JingleFileTransferReceivedSerializer());
serializers_.push_back(new JingleIBBTransportPayloadSerializer());
serializers_.push_back(new JingleS5BTransportPayloadSerializer());
serializers_.push_back(new JinglePayloadSerializer(this));
serializers_.push_back(new S5BProxyRequestSerializer());
serializers_.push_back(new DeliveryReceiptSerializer());
serializers_.push_back(new DeliveryReceiptRequestSerializer());
serializers_.push_back(new PubSubSerializer(this));
serializers_.push_back(new PubSubEventSerializer(this));
serializers_.push_back(new PubSubOwnerPubSubSerializer(this));
serializers_.push_back(new PubSubErrorSerializer());
serializers_.push_back(new ResultSetSerializer());
serializers_.push_back(new ForwardedSerializer(this));
serializers_.push_back(new MAMResultSerializer(this));
serializers_.push_back(new MAMQuerySerializer());
serializers_.push_back(new MAMArchivedSerializer());
+ serializers_.push_back(new IsodeIQDelegationSerializer(this));
foreach(PayloadSerializer* serializer, serializers_) {
addSerializer(serializer);
}
}
FullPayloadSerializerCollection::~FullPayloadSerializerCollection() {
foreach(PayloadSerializer* serializer, serializers_) {
removeSerializer(serializer);
delete serializer;
}
serializers_.clear();
}
}
diff --git a/Swiften/Serializer/PayloadSerializers/IsodeIQDelegationSerializer.cpp b/Swiften/Serializer/PayloadSerializers/IsodeIQDelegationSerializer.cpp
new file mode 100644
index 0000000..8e782b4
--- /dev/null
+++ b/Swiften/Serializer/PayloadSerializers/IsodeIQDelegationSerializer.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2014 Remko Tronçon and Kevin Smith
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#pragma clang diagnostic ignored "-Wunused-private-field"
+
+#include <Swiften/Serializer/PayloadSerializers/IsodeIQDelegationSerializer.h>
+#include <Swiften/Serializer/XML/XMLElement.h>
+#include <boost/smart_ptr/make_shared.hpp>
+
+#include <Swiften/Serializer/PayloadSerializerCollection.h>
+#include <Swiften/Serializer/XML/XMLRawTextNode.h>
+
+using namespace Swift;
+
+IsodeIQDelegationSerializer::IsodeIQDelegationSerializer(PayloadSerializerCollection* serializers) : serializers(serializers) {
+}
+
+IsodeIQDelegationSerializer::~IsodeIQDelegationSerializer() {
+}
+
+std::string IsodeIQDelegationSerializer::serializePayload(boost::shared_ptr<IsodeIQDelegation> payload) const {
+ if (!payload) {
+ return "";
+ }
+ XMLElement element("delegate", "http://isode.com/iq_delegation");
+ element.addNode(boost::make_shared<XMLRawTextNode>(serializers->getPayloadSerializer(payload->getForward())->serialize(payload->getForward())));
+ return element.serialize();
+}
+
+
diff --git a/Swiften/Serializer/PayloadSerializers/IsodeIQDelegationSerializer.h b/Swiften/Serializer/PayloadSerializers/IsodeIQDelegationSerializer.h
new file mode 100644
index 0000000..1bcd993
--- /dev/null
+++ b/Swiften/Serializer/PayloadSerializers/IsodeIQDelegationSerializer.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2014 Remko Tronçon and Kevin Smith
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+
+#pragma once
+
+#include <Swiften/Base/Override.h>
+#include <Swiften/Base/API.h>
+#include <Swiften/Serializer/GenericPayloadSerializer.h>
+#include <Swiften/Elements/IsodeIQDelegation.h>
+#include <boost/shared_ptr.hpp>
+
+namespace Swift {
+ class PayloadSerializerCollection;
+
+ class SWIFTEN_API IsodeIQDelegationSerializer : public GenericPayloadSerializer<IsodeIQDelegation> {
+ public:
+ IsodeIQDelegationSerializer(PayloadSerializerCollection* serializers);
+ virtual ~IsodeIQDelegationSerializer();
+
+ virtual std::string serializePayload(boost::shared_ptr<IsodeIQDelegation>) const SWIFTEN_OVERRIDE;
+
+ private:
+
+
+ private:
+ PayloadSerializerCollection* serializers;
+ };
+}