src/XMLDocumentConstructor.h
branchv_0
changeset 5 a3794fe5ea4b
parent 4 dd8ff58fb29b
child 6 47b677177365
equal deleted inserted replaced
4:dd8ff58fb29b 5:a3794fe5ea4b
    53 
    53 
    54 	std::string format(const vmime::mediaType& contentType) {
    54 	std::string format(const vmime::mediaType& contentType) {
    55 		return contentType.getType() + "/" + contentType.getSubType();
    55 		return contentType.getType() + "/" + contentType.getSubType();
    56 	}
    56 	}
    57 
    57 
       
    58 	std::string toLowerCase(const std::string& value) {
       
    59 		std::string result = value;
       
    60 		std::transform(result.begin(), result.end(), result.begin(), ::tolower);
       
    61 		return result;
       
    62 	}
       
    63 
    58 	std::string fetchBody(std::shared_ptr<vmime::body> body) {
    64 	std::string fetchBody(std::shared_ptr<vmime::body> body) {
    59 		std::stringstream result;
    65 		std::stringstream result;
    60 		vmime::utility::outputStreamAdapter resultAdapter(result);
    66 		vmime::utility::outputStreamAdapter resultAdapter(result);
    61 
    67 
    62 		const vmime::charset targetEncoding = vmime::charset("utf-8");
    68 		const vmime::charset targetEncoding = vmime::charset("utf-8");
   119 
   125 
   120 		xmlpp::Element* headers = root->add_child("headers");
   126 		xmlpp::Element* headers = root->add_child("headers");
   121 
   127 
   122 		for (std::shared_ptr<vmime::headerField> mimeField : m.getHeader()->getFieldList()) {
   128 		for (std::shared_ptr<vmime::headerField> mimeField : m.getHeader()->getFieldList()) {
   123 			// TODO: Are names always ASCII and subset of UTF-8?
   129 			// TODO: Are names always ASCII and subset of UTF-8?
   124 			// TODO: Convert header names to lower case? (they should be case insensitive)
   130 			xmlpp::Element* field = headers->add_child(toLowerCase(nameCodec.encode(mimeField->getName())));
   125 			xmlpp::Element* field = headers->add_child(nameCodec.encode(mimeField->getName()));
       
   126 
       
   127 
   131 
   128 			if (auto value = mimeField->getValue<vmime::text>()) {
   132 			if (auto value = mimeField->getValue<vmime::text>()) {
   129 				field->add_child_text(value->getConvertedText(ch));
   133 				field->add_child_text(value->getConvertedText(ch));
   130 			} else if (auto value = mimeField->getValue<vmime::mailbox>()) {
   134 			} else if (auto value = mimeField->getValue<vmime::mailbox>()) {
   131 				std::string name = value->getName().getConvertedText(ch);
   135 				std::string name = value->getName().getConvertedText(ch);