diff options
| author | Richard Maudsley <richard.maudsley@isode.com> | 2014-02-25 13:19:11 (GMT) |
|---|---|---|
| committer | Swift Review <review@swift.im> | 2014-04-24 13:06:33 (GMT) |
| commit | e4704555946626980014d936dcfe6ede2710501b (patch) | |
| tree | 59d0db1bad3d4a0f74c89da8834b2002369c3b4b /Swiften/Serializer/StanzaSerializer.cpp | |
| parent | 09e9713028b728fad9050c4e20180cc96c4572ce (diff) | |
| download | swift-contrib-e4704555946626980014d936dcfe6ede2710501b.zip swift-contrib-e4704555946626980014d936dcfe6ede2710501b.tar.bz2 | |
Added MAM parsers, serializers and tests.
Change-Id: I589a7c65664bfecfd0ac34240600dcccb4cbd40e
Diffstat (limited to 'Swiften/Serializer/StanzaSerializer.cpp')
| -rw-r--r-- | Swiften/Serializer/StanzaSerializer.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Swiften/Serializer/StanzaSerializer.cpp b/Swiften/Serializer/StanzaSerializer.cpp index 9a4fd2c..b5f0b22 100644 --- a/Swiften/Serializer/StanzaSerializer.cpp +++ b/Swiften/Serializer/StanzaSerializer.cpp @@ -1,57 +1,61 @@ /* - * Copyright (c) 2010 Remko Tronçon + * 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/StanzaSerializer.h> #include <sstream> #include <typeinfo> #include <iostream> #include <Swiften/Base/foreach.h> #include <Swiften/Serializer/XML/XMLElement.h> #include <Swiften/Serializer/XML/XMLRawTextNode.h> #include <Swiften/Serializer/PayloadSerializer.h> #include <Swiften/Serializer/PayloadSerializerCollection.h> #include <Swiften/Elements/Stanza.h> namespace Swift { StanzaSerializer::StanzaSerializer(const std::string& tag, PayloadSerializerCollection* payloadSerializers) : tag_(tag), payloadSerializers_(payloadSerializers) { } SafeByteArray StanzaSerializer::serialize(boost::shared_ptr<Element> element) const { + return serialize(element, ""); +} + +SafeByteArray StanzaSerializer::serialize(boost::shared_ptr<Element> element, const std::string& xmlns) const { boost::shared_ptr<Stanza> stanza(boost::dynamic_pointer_cast<Stanza>(element)); - XMLElement stanzaElement(tag_); + XMLElement stanzaElement(tag_, xmlns); if (stanza->getFrom().isValid()) { stanzaElement.setAttribute("from", stanza->getFrom()); } if (stanza->getTo().isValid()) { stanzaElement.setAttribute("to", stanza->getTo()); } if (!stanza->getID().empty()) { stanzaElement.setAttribute("id", stanza->getID()); } setStanzaSpecificAttributes(stanza, stanzaElement); std::string serializedPayloads; foreach (const boost::shared_ptr<Payload>& payload, stanza->getPayloads()) { PayloadSerializer* serializer = payloadSerializers_->getPayloadSerializer(payload); if (serializer) { serializedPayloads += serializer->serialize(payload); } else { std::cerr << "Could not find serializer for " << typeid(*(payload.get())).name() << std::endl; } } if (!serializedPayloads.empty()) { stanzaElement.addNode(boost::shared_ptr<XMLNode>(new XMLRawTextNode(serializedPayloads))); } return createSafeByteArray(stanzaElement.serialize()); } } |
Swift