summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2009-09-12 22:10:43 (GMT)
committerRemko Tronçon <git@el-tramo.be>2009-09-14 10:42:18 (GMT)
commit7585bf84c6d6405cfb97ae2509d43eb77cac94de (patch)
tree65a39e2ec6cd9dad57fd12d2cc0de542e9fc03a5 /Swiften/Serializer/PayloadSerializers/StorageSerializer.cpp
parentba4292f83f92037fdd12b0f7413f628a4b2c7a22 (diff)
downloadswift-contrib-7585bf84c6d6405cfb97ae2509d43eb77cac94de.zip
swift-contrib-7585bf84c6d6405cfb97ae2509d43eb77cac94de.tar.bz2
Added storage serializer.
Diffstat (limited to 'Swiften/Serializer/PayloadSerializers/StorageSerializer.cpp')
-rw-r--r--Swiften/Serializer/PayloadSerializers/StorageSerializer.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/Swiften/Serializer/PayloadSerializers/StorageSerializer.cpp b/Swiften/Serializer/PayloadSerializers/StorageSerializer.cpp
new file mode 100644
index 0000000..4268381
--- /dev/null
+++ b/Swiften/Serializer/PayloadSerializers/StorageSerializer.cpp
@@ -0,0 +1,36 @@
+#include "Swiften/Serializer/PayloadSerializers/StorageSerializer.h"
+
+#include <boost/shared_ptr.hpp>
+
+#include "Swiften/Base/foreach.h"
+#include "Swiften/Serializer/XML/XMLElement.h"
+#include "Swiften/Serializer/XML/XMLTextNode.h"
+
+namespace Swift {
+
+StorageSerializer::StorageSerializer() : GenericPayloadSerializer<Storage>() {
+}
+
+String StorageSerializer::serializePayload(boost::shared_ptr<Storage> storage) const {
+ XMLElement storageElement("storage", "storage:bookmarks");
+ foreach(const Storage::Conference& conference, storage->getConferences()) {
+ boost::shared_ptr<XMLElement> conferenceElement(new XMLElement("conference"));
+ conferenceElement->setAttribute("name", conference.name);
+ conferenceElement->setAttribute("jid", conference.jid);
+ conferenceElement->setAttribute("autojoin", conference.autoJoin ? "1" : "0");
+ if (!conference.nick.isEmpty()) {
+ boost::shared_ptr<XMLElement> nickElement(new XMLElement("nick"));
+ nickElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(conference.nick)));
+ conferenceElement->addNode(nickElement);
+ }
+ if (!conference.password.isEmpty()) {
+ boost::shared_ptr<XMLElement> passwordElement(new XMLElement("password"));
+ passwordElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(conference.password)));
+ conferenceElement->addNode(passwordElement);
+ }
+ storageElement.addNode(conferenceElement);
+ }
+ return storageElement.serialize();
+}
+
+}