summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2010-03-28 15:46:49 (GMT)
committerRemko Tronçon <git@el-tramo.be>2010-03-28 15:46:49 (GMT)
commitf53a1ef582494458301b97bf6e546be52d7ff7e8 (patch)
tree7571b5cbcbd8a8f1dd1c966c9045b6cb69f0e295 /Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp
parent638345680d72ca6acaf123f2c8c1c391f696e371 (diff)
downloadswift-f53a1ef582494458301b97bf6e546be52d7ff7e8.zip
swift-f53a1ef582494458301b97bf6e546be52d7ff7e8.tar.bz2
Moving submodule contents back.
Diffstat (limited to 'Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp')
-rw-r--r--Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp b/Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp
new file mode 100644
index 0000000..fbb0274
--- /dev/null
+++ b/Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp
@@ -0,0 +1,50 @@
+#include "Swiften/Serializer/PayloadSerializers/VCardSerializer.h"
+
+#include <boost/shared_ptr.hpp>
+
+#include "Swiften/Serializer/XML/XMLElement.h"
+#include "Swiften/Serializer/XML/XMLTextNode.h"
+
+namespace Swift {
+
+VCardSerializer::VCardSerializer() : GenericPayloadSerializer<VCard>() {
+}
+
+String VCardSerializer::serializePayload(boost::shared_ptr<VCard> vcard) const {
+ XMLElement queryElement("vCard", "vcard-temp");
+ if (!vcard->getFullName().isEmpty()) {
+ boost::shared_ptr<XMLElement> fullNameElement(new XMLElement("FN"));
+ fullNameElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getFullName())));
+ queryElement.addNode(fullNameElement);
+ }
+ if (!vcard->getGivenName().isEmpty() || !vcard->getFamilyName().isEmpty()) {
+ boost::shared_ptr<XMLElement> nameElement(new XMLElement("N"));
+ if (!vcard->getFamilyName().isEmpty()) {
+ boost::shared_ptr<XMLElement> familyNameElement(new XMLElement("FAMILY"));
+ familyNameElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getFamilyName())));
+ nameElement->addNode(familyNameElement);
+ }
+ if (!vcard->getGivenName().isEmpty()) {
+ boost::shared_ptr<XMLElement> givenNameElement(new XMLElement("GIVEN"));
+ givenNameElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getGivenName())));
+ nameElement->addNode(givenNameElement);
+ }
+ queryElement.addNode(nameElement);
+ }
+ if (!vcard->getEMail().isEmpty()) {
+ boost::shared_ptr<XMLElement> emailElement(new XMLElement("EMAIL"));
+ boost::shared_ptr<XMLElement> userIDElement(new XMLElement("USERID"));
+ userIDElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getEMail())));
+ emailElement->addNode(userIDElement);
+ queryElement.addNode(emailElement);
+ }
+ if (!vcard->getNickname().isEmpty()) {
+ boost::shared_ptr<XMLElement> nickElement(new XMLElement("NICKNAME"));
+ nickElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getNickname())));
+ queryElement.addNode(nickElement);
+ }
+ // TODO
+ return queryElement.serialize();
+}
+
+}