summaryrefslogtreecommitdiffstats
path: root/mimelib/basicmsg.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mimelib/basicmsg.cpp')
-rw-r--r--mimelib/basicmsg.cpp438
1 files changed, 438 insertions, 0 deletions
diff --git a/mimelib/basicmsg.cpp b/mimelib/basicmsg.cpp
new file mode 100644
index 000000000..2e04a04af
--- /dev/null
+++ b/mimelib/basicmsg.cpp
@@ -0,0 +1,438 @@
+//=============================================================================
+// File: basicmsg.cpp
+// Contents: Definitions for BasicMessage
+// Maintainer: Doug Sauder <dwsauder@fwb.gulf.net>
+// WWW: http://www.fwb.gulf.net/~dwsauder/mimepp.html
+//
+// Copyright (c) 1996, 1997 Douglas W. Sauder
+// All rights reserved.
+//
+// IN NO EVENT SHALL DOUGLAS W. SAUDER BE LIABLE TO ANY PARTY FOR DIRECT,
+// INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
+// THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF DOUGLAS W. SAUDER
+// HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// DOUGLAS W. SAUDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT
+// NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+// PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS"
+// BASIS, AND DOUGLAS W. SAUDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE,
+// SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+//
+//=============================================================================
+
+#include <assert.h>
+#include <stdlib.h>
+#include "basicmsg.h"
+
+
+BasicMessage::BasicMessage()
+{
+ mMessage = DwMessage::NewMessage(mEmptyString, 0);
+}
+
+
+BasicMessage::BasicMessage(DwMessage* aMsg)
+{
+ mMessage = aMsg;
+}
+
+
+BasicMessage::~BasicMessage()
+{
+ if (mMessage != 0) {
+ delete mMessage;
+ }
+}
+
+
+void BasicMessage::TakeMessage(DwMessage* aMsg)
+{
+ // Delete the old DwMessage
+
+ if (mMessage) {
+ delete mMessage;
+ }
+
+ // Assign the new DwMessage
+
+ mMessage = aMsg;
+}
+
+
+const DwString& BasicMessage::AsString()
+{
+ // Assemble the DwMessage
+
+ mMessage->Assemble();
+
+ // Return its string contents
+
+ return mMessage->AsString();
+}
+
+
+void BasicMessage::SetAutomaticFields()
+{
+ DwHeaders& headers = mMessage->Headers();
+ headers.MimeVersion().FromString("1.0");
+ headers.MessageId().CreateDefault();
+}
+
+
+const DwString& BasicMessage::DateStr() const
+{
+ // Access the 'Date' header field and return its contents as a string
+
+ DwHeaders& headers = mMessage->Headers();
+ if (headers.HasDate()) {
+ return headers.Date().AsString();
+ }
+ else {
+ return mEmptyString;
+ }
+}
+
+
+DwUint32 BasicMessage::Date() const
+{
+ // Access the 'Date' header field and return its contents as a UNIX
+ // time (i.e. POSIX time)
+
+ DwHeaders& headers = mMessage->Headers();
+ if (headers.HasDate()) {
+ return headers.Date().AsUnixTime();
+ }
+ else {
+ return (DwUint32) -1;
+ }
+}
+
+
+void BasicMessage::SetDate(DwUint32 aUnixTime)
+{
+ // Access the 'Date' header field and set its contents from a UNIX
+ // time (i.e. POSIX time)
+
+ mMessage->Headers().Date().FromUnixTime(aUnixTime);
+}
+
+
+const DwString& BasicMessage::To() const
+{
+ // Access the 'To' header field and return its contents as a string
+
+ DwHeaders& headers = mMessage->Headers();
+ if (headers.HasTo()) {
+ return headers.To().AsString();
+ }
+ else {
+ return mEmptyString;
+ }
+}
+
+
+void BasicMessage::SetTo(const DwString& aStr)
+{
+ // Access the 'To' header field and set its contents from a string
+
+ mMessage->Headers().To().FromString(aStr);
+}
+
+
+const DwString& BasicMessage::Cc() const
+{
+ // Access the 'Cc' header field and return its contents as a string
+
+ DwHeaders& headers = mMessage->Headers();
+ if (headers.HasCc()) {
+ return headers.Cc().AsString();
+ }
+ else {
+ return mEmptyString;
+ }
+}
+
+
+void BasicMessage::SetCc(const DwString& aStr)
+{
+ // Access the 'Cc' header field and set its contents from a string
+
+ mMessage->Headers().Cc().FromString(aStr);
+}
+
+
+const DwString& BasicMessage::Bcc() const
+{
+ // Access the 'Bcc' header field and return its contents as a string
+
+ DwHeaders& headers = mMessage->Headers();
+ if (headers.HasBcc()) {
+ return headers.Bcc().AsString();
+ }
+ else {
+ return mEmptyString;
+ }
+}
+
+
+void BasicMessage::SetBcc(const DwString& aStr)
+{
+ // Access the 'Bcc' header field and set its contents from a string
+
+ mMessage->Headers().Bcc().FromString(aStr);
+}
+
+
+const DwString& BasicMessage::From() const
+{
+ // Access the 'From' header field and return its contents as a string
+
+ DwHeaders& headers = mMessage->Headers();
+ if (headers.HasFrom()) {
+ return headers.From().AsString();
+ }
+ else {
+ return mEmptyString;
+ }
+}
+
+
+void BasicMessage::SetFrom(const DwString& aStr)
+{
+ // Access the 'From' header field and set its contents from a string
+
+ mMessage->Headers().From().FromString(aStr);
+}
+
+
+const DwString& BasicMessage::Subject() const
+{
+ // Access the 'Subject' header field and return its contents as a string
+
+ DwHeaders& headers = mMessage->Headers();
+ if (headers.HasSubject()) {
+ return headers.Subject().AsString();
+ }
+ else {
+ return mEmptyString;
+ }
+}
+
+
+void BasicMessage::SetSubject(const DwString& aStr)
+{
+ // Access the 'Subject' header field and set its contents from a string
+
+ mMessage->Headers().Subject().FromString(aStr);
+}
+
+
+const DwString& BasicMessage::TypeStr() const
+{
+ // Access the 'Content-Type' header field and return its 'type'
+ // as a string
+
+ DwHeaders& headers = mMessage->Headers();
+ if (headers.HasContentType()) {
+ return headers.ContentType().TypeStr();
+ }
+ else {
+ return mEmptyString;
+ }
+}
+
+
+int BasicMessage::Type() const
+{
+ // Access the 'Content-Type' header field and return its 'type'
+ // as an enumerated type
+
+ DwHeaders& headers = mMessage->Headers();
+ if (headers.HasContentType()) {
+ return headers.ContentType().Type();
+ }
+ else {
+ return DwMime::kTypeNull;
+ }
+}
+
+
+void BasicMessage::SetTypeStr(const DwString& aStr)
+{
+ // Access the 'Content-Type' header field and set its 'type'
+ // from a string
+
+ mMessage->Headers().ContentType().SetTypeStr(aStr);
+}
+
+
+void BasicMessage::SetType(int aType)
+{
+ // Access the 'Content-Type' header field and set its 'type'
+ // from an enumerated type
+
+ mMessage->Headers().ContentType().SetType(aType);
+}
+
+
+const DwString& BasicMessage::SubtypeStr() const
+{
+ // Access the 'Content-Type' header field and return its 'subtype'
+ // as a string
+
+ DwHeaders& headers = mMessage->Headers();
+ if (headers.HasContentType()) {
+ return headers.ContentType().SubtypeStr();
+ }
+ else {
+ return mEmptyString;
+ }
+}
+
+
+int BasicMessage::Subtype() const
+{
+ // Access the 'Content-Type' header field and return its 'subtype'
+ // as an enumerated type
+
+ DwHeaders& headers = mMessage->Headers();
+ if (headers.HasContentType()) {
+ return headers.ContentType().Subtype();
+ }
+ else {
+ return DwMime::kSubtypeNull;
+ }
+}
+
+
+void BasicMessage::SetSubtypeStr(const DwString& aStr)
+{
+ // Access the 'Content-Type' header field and set its 'subtype'
+ // from a string
+
+ mMessage->Headers().ContentType().SetSubtypeStr(aStr);
+}
+
+
+void BasicMessage::SetSubtype(int aSubtype)
+{
+ // Access the 'Content-Type' header field and set its 'subtype'
+ // from an enumerated type
+
+ mMessage->Headers().ContentType().SetSubtype(aSubtype);
+}
+
+
+const DwString& BasicMessage::ContentTransferEncodingStr() const
+{
+ // Access the 'Content-Transfer-Encoding' header field and return
+ // its contents as a string
+
+ DwHeaders& headers = mMessage->Headers();
+ if (headers.HasContentTransferEncoding()) {
+ return headers.ContentTransferEncoding().AsString();
+ }
+ else {
+ return mEmptyString;
+ }
+}
+
+
+int BasicMessage::ContentTransferEncoding() const
+{
+ // Access the 'Content-Transfer-Encoding' header field and return
+ // its contents as an enumerated type
+
+ DwHeaders& headers = mMessage->Headers();
+ if (headers.HasContentTransferEncoding()) {
+ return headers.ContentTransferEncoding().AsEnum();
+ }
+ else {
+ return DwMime::kCteNull;
+ }
+}
+
+
+void BasicMessage::SetContentTransferEncodingStr(const DwString& aStr)
+{
+ // Access the 'Content-Transfer-Encoding' header field and set
+ // its contents from a string
+
+ mMessage->Headers().ContentTransferEncoding().FromString(aStr);
+}
+
+
+void BasicMessage::SetContentTransferEncoding(int aCte)
+{
+ // Access the 'Content-Transfer-Encoding' header field and set
+ // its contents from an enumerated type
+
+ mMessage->Headers().ContentTransferEncoding().FromEnum(aCte);
+}
+
+
+const DwString& BasicMessage::CteStr() const
+{
+ // Access the 'Content-Transfer-Encoding' header field and return
+ // its contents as a string
+
+ DwHeaders& headers = mMessage->Headers();
+ if (headers.HasContentTransferEncoding()) {
+ return headers.ContentTransferEncoding().AsString();
+ }
+ else {
+ return mEmptyString;
+ }
+}
+
+
+int BasicMessage::Cte() const
+{
+ // Access the 'Content-Transfer-Encoding' header field and return
+ // its contents as an enumerated type
+
+ DwHeaders& headers = mMessage->Headers();
+ if (headers.HasContentTransferEncoding()) {
+ return headers.ContentTransferEncoding().AsEnum();
+ }
+ else {
+ return DwMime::kCteNull;
+ }
+}
+
+
+void BasicMessage::SetCteStr(const DwString& aStr)
+{
+ // Access the 'Content-Transfer-Encoding' header field and set
+ // its contents from a string
+
+ mMessage->Headers().ContentTransferEncoding().FromString(aStr);
+}
+
+
+void BasicMessage::SetCte(int aCte)
+{
+ // Access the 'Content-Transfer-Encoding' header field and set
+ // its contents from an enumerated type
+
+ mMessage->Headers().ContentTransferEncoding().FromEnum(aCte);
+}
+
+
+const DwString& BasicMessage::Body() const
+{
+ // Access the message body and return its contents as a string
+
+ const DwString& body = mMessage->Body().AsString();
+ return body;
+}
+
+
+void BasicMessage::SetBody(const DwString& aStr)
+{
+ // Access the message body and set its contents from a string
+
+ mMessage->Body().FromString(aStr);
+}
+
+