From acfa9ffc64f56de42049bf5049810c15477729ed Mon Sep 17 00:00:00 2001 From: Vincent Richard Date: Fri, 4 Nov 2005 23:21:22 +0000 Subject: Refactored header field values and parameters. --- src/headerFieldFactory.cpp | 105 +++++++++++++++++++++++++++++---------------- 1 file changed, 68 insertions(+), 37 deletions(-) (limited to 'src/headerFieldFactory.cpp') diff --git a/src/headerFieldFactory.cpp b/src/headerFieldFactory.cpp index 98a6f300..61782c2b 100644 --- a/src/headerFieldFactory.cpp +++ b/src/headerFieldFactory.cpp @@ -24,11 +24,18 @@ #include "vmime/headerFieldFactory.hpp" #include "vmime/exception.hpp" -#include "vmime/standardFields.hpp" +#include "vmime/mailboxList.hpp" +#include "vmime/dateTime.hpp" +#include "vmime/text.hpp" +#include "vmime/path.hpp" +#include "vmime/relay.hpp" +#include "vmime/encoding.hpp" +#include "vmime/disposition.hpp" +#include "vmime/messageIdSequence.hpp" -#include "vmime/mailboxField.hpp" #include "vmime/contentTypeField.hpp" #include "vmime/contentDispositionField.hpp" +#include "vmime/mailboxField.hpp" namespace vmime @@ -37,34 +44,44 @@ namespace vmime headerFieldFactory::headerFieldFactory() { - // Register some default fields - registerName (vmime::fields::FROM); - registerName (vmime::fields::TO); - registerName (vmime::fields::CC); - registerName (vmime::fields::BCC); - registerName (vmime::fields::SENDER); - registerName (vmime::fields::DATE); - registerName (vmime::fields::RECEIVED); - registerName (vmime::fields::SUBJECT); - registerName (vmime::fields::REPLY_TO); - registerName (vmime::fields::DELIVERED_TO); - registerName (vmime::fields::ORGANIZATION); - registerName (vmime::fields::USER_AGENT); - registerName (vmime::fields::RETURN_PATH); - registerName (vmime::fields::CONTENT_TYPE); - registerName (vmime::fields::CONTENT_TRANSFER_ENCODING); - registerName (vmime::fields::CONTENT_DESCRIPTION); - registerName (vmime::fields::MIME_VERSION); - registerName (vmime::fields::CONTENT_DISPOSITION); - registerName (vmime::fields::CONTENT_ID); - registerName (vmime::fields::MESSAGE_ID); - registerName (vmime::fields::CONTENT_LOCATION); - registerName (vmime::fields::IN_REPLY_TO); - registerName (vmime::fields::REFERENCES); - - registerName (vmime::fields::ORIGINAL_MESSAGE_ID); - registerName (vmime::fields::DISPOSITION); - registerName (vmime::fields::DISPOSITION_NOTIFICATION_TO); + // Register parameterized fields + registerField (vmime::fields::CONTENT_TYPE); + registerField (vmime::fields::CONTENT_TRANSFER_ENCODING); + registerField (vmime::fields::CONTENT_DISPOSITION); + + registerField (vmime::fields::FROM); + registerField (vmime::fields::SENDER); + registerField (vmime::fields::REPLY_TO); + registerField (vmime::fields::DELIVERED_TO); + + // Register standard field values + registerFieldValue (vmime::fields::FROM); + registerFieldValue (vmime::fields::TO); + registerFieldValue (vmime::fields::CC); + registerFieldValue (vmime::fields::BCC); + registerFieldValue (vmime::fields::SENDER); + registerFieldValue (vmime::fields::DATE); + registerFieldValue (vmime::fields::RECEIVED); + registerFieldValue (vmime::fields::SUBJECT); + registerFieldValue (vmime::fields::REPLY_TO); + registerFieldValue (vmime::fields::DELIVERED_TO); + registerFieldValue (vmime::fields::ORGANIZATION); + registerFieldValue (vmime::fields::USER_AGENT); + registerFieldValue (vmime::fields::RETURN_PATH); + registerFieldValue (vmime::fields::CONTENT_TYPE); + registerFieldValue (vmime::fields::CONTENT_TRANSFER_ENCODING); + registerFieldValue (vmime::fields::CONTENT_DESCRIPTION); + registerFieldValue (vmime::fields::MIME_VERSION); + registerFieldValue (vmime::fields::CONTENT_DISPOSITION); + registerFieldValue (vmime::fields::CONTENT_ID); + registerFieldValue (vmime::fields::MESSAGE_ID); + registerFieldValue (vmime::fields::CONTENT_LOCATION); + registerFieldValue (vmime::fields::IN_REPLY_TO); + registerFieldValue (vmime::fields::REFERENCES); + + registerFieldValue (vmime::fields::ORIGINAL_MESSAGE_ID); + registerFieldValue (vmime::fields::DISPOSITION); + registerFieldValue (vmime::fields::DISPOSITION_NOTIFICATION_TO); } @@ -87,21 +104,35 @@ ref headerFieldFactory::create ref field = NULL; if (pos != m_nameMap.end()) - { field = ((*pos).second)(); - } else - { - field = registerer ::creator(); - } + field = registerer ::creator(); - field->m_name = name; + field->setName(name); + field->setValue(createValue(name)); if (body != NULL_STRING) field->parse(body); - return (field); + return field; +} + + +ref headerFieldFactory::createValue(const string& fieldName) +{ + ValueMap::const_iterator pos = m_valueMap.find + (utility::stringUtils::toLower(fieldName)); + + ref value = NULL; + + if (pos != m_valueMap.end()) + value = ((*pos).second)(); + else + value = registerer ::creator(); + + return value; } } // vmime + -- cgit v1.2.3