diff options
| author | Remko Tronçon <git@el-tramo.be> | 2009-06-20 09:00:52 (GMT) | 
|---|---|---|
| committer | Remko Tronçon <git@el-tramo.be> | 2009-06-20 14:37:51 (GMT) | 
| commit | fcd2d7cfb5a05be0fd13bfa3582b46c1a1b595aa (patch) | |
| tree | 17e3eef980584b8f194d68d1d9b9eae967423885 /Swiften/Parser/PayloadParsers/VCardParser.cpp | |
| parent | 6310bc00ceeb65f0cf6fc0ada9d1b188517d8a76 (diff) | |
| download | swift-fcd2d7cfb5a05be0fd13bfa3582b46c1a1b595aa.zip swift-fcd2d7cfb5a05be0fd13bfa3582b46c1a1b595aa.tar.bz2  | |
Added beginnings of a vCard parser.
Only implemented PHOTO subtag, because it's the only thing we
need right now.
Diffstat (limited to 'Swiften/Parser/PayloadParsers/VCardParser.cpp')
| -rw-r--r-- | Swiften/Parser/PayloadParsers/VCardParser.cpp | 38 | 
1 files changed, 38 insertions, 0 deletions
diff --git a/Swiften/Parser/PayloadParsers/VCardParser.cpp b/Swiften/Parser/PayloadParsers/VCardParser.cpp new file mode 100644 index 0000000..a6fe2be --- /dev/null +++ b/Swiften/Parser/PayloadParsers/VCardParser.cpp @@ -0,0 +1,38 @@ +#include "Swiften/Parser/PayloadParsers/VCardParser.h" +#include "Swiften/Base/foreach.h" +#include "Swiften/StringCodecs/Base64.h" + +namespace Swift { + +VCardParser::VCardParser() { +} + +void VCardParser::handleStartElement(const String& element, const String&, const AttributeMap&) { +	elementStack_.push_back(element); +	currentText_ = ""; +} + +void VCardParser::handleEndElement(const String&, const String&) { +	String elementHierarchy = getElementHierarchy(); +	if (elementHierarchy == "/vCard/PHOTO/TYPE") { +		getPayloadInternal()->setPhotoType(currentText_); +	} +	else if (elementHierarchy == "/vCard/PHOTO/BINVAL") { +		getPayloadInternal()->setPhoto(Base64::decode(currentText_)); +	} +	elementStack_.pop_back(); +} + +void VCardParser::handleCharacterData(const String& text) { +	currentText_ += text; +} + +String VCardParser::getElementHierarchy() const { +	String result; +	foreach(const String& element, elementStack_) { +		result += "/" + element; +	} +	return result; +} + +}  | 
 Swift