summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Serializer/PayloadSerializers')
-rw-r--r--Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp b/Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp
index 19a6b6e..8975818 100644
--- a/Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp
+++ b/Swiften/Serializer/PayloadSerializers/VCardSerializer.cpp
@@ -10,6 +10,7 @@
#include "Swiften/Serializer/XML/XMLElement.h"
#include "Swiften/Serializer/XML/XMLTextNode.h"
+#include "Swiften/StringCodecs/Hexify.h"
namespace Swift {
@@ -49,7 +50,20 @@ String VCardSerializer::serializePayload(boost::shared_ptr<VCard> vcard) const
nickElement->addNode(boost::shared_ptr<XMLTextNode>(new XMLTextNode(vcard->getNickname())));
queryElement.addNode(nickElement);
}
- // TODO
+ if (!vcard->getPhoto().isEmpty() || !vcard->getPhotoType().isEmpty()) {
+ XMLElement::ref photoElement(new XMLElement("PHOTO"));
+ if (!vcard->getPhotoType().isEmpty()) {
+ XMLElement::ref typeElement(new XMLElement("TYPE"));
+ typeElement->addNode(XMLTextNode::ref(new XMLTextNode(vcard->getPhotoType())));
+ photoElement->addNode(typeElement);
+ }
+ if (!vcard->getPhoto().isEmpty()) {
+ XMLElement::ref binvalElement(new XMLElement("BINVAL"));
+ binvalElement->addNode(XMLTextNode::ref(new XMLTextNode(Hexify::hexify(vcard->getPhoto()))));
+ photoElement->addNode(binvalElement);
+ }
+ queryElement.addNode(photoElement);
+ }
return queryElement.serialize();
}