mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-04 21:18:35 +00:00
WIP: Mime
This commit is contained in:
parent
e5b59a4f10
commit
f9e9c2b527
@ -20,6 +20,8 @@
|
||||
#define nsMIMEBasicBodyPart_h___
|
||||
|
||||
#include "nsMIMEBodyPart.h"
|
||||
#include "nsString.h"
|
||||
#include "mime.h"
|
||||
|
||||
class nsMIMEBasicBodyPart : public nsMIMEBodyPart
|
||||
{
|
||||
@ -29,10 +31,14 @@ public:
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
NS_IMETHOD Init() ;
|
||||
NS_IMETHOD SetBody(nsString& aBody) ;
|
||||
|
||||
protected:
|
||||
~nsMIMEBasicBodyPart();
|
||||
|
||||
public:
|
||||
mime_basicPart_t * mMimeBasicPart ;
|
||||
|
||||
};
|
||||
|
||||
#endif /* nsMIMEBasicBodyPart_h___ */
|
||||
|
@ -21,6 +21,8 @@
|
||||
|
||||
#include "nsMessage.h"
|
||||
#include "nsIMIMEMessage.h"
|
||||
#include "nsIMIMEBodyPart.h"
|
||||
#include "mime.h"
|
||||
|
||||
class nsMIMEMessage : public nsMessage,
|
||||
public nsIMIMEMessage
|
||||
@ -38,6 +40,7 @@ public:
|
||||
|
||||
NS_IMETHOD AddAttachment(nsString& aAttachment, nsMIMEEncoding aMIMEEncoding = nsMIMEEncoding_default);
|
||||
NS_IMETHOD AddText(nsString& aText, nsMIMEEncoding aMIMEEncoding = nsMIMEEncoding_default);
|
||||
NS_IMETHOD SetBody(nsString& aBody);
|
||||
|
||||
NS_IMETHOD AddBodyPart(nsIMIMEBodyPart& aBodyPart);
|
||||
|
||||
@ -48,6 +51,10 @@ protected:
|
||||
|
||||
private:
|
||||
nsMIMEBodyType mBodyType;
|
||||
nsIMIMEBodyPart * mBodyPart;
|
||||
|
||||
public:
|
||||
mime_message_t * mMimeMessageT;
|
||||
|
||||
};
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
#
|
||||
|
||||
CFLAGS +=-D_IMPL_NS_XPFC -DNSPR20
|
||||
INCLUDES += -I../inc -I$(GDEPTH)/include
|
||||
INCLUDES += -I../inc
|
||||
|
||||
LIBRARY_NAME = xpfc_msg
|
||||
LIBRARY_VERSION = 10
|
||||
|
@ -18,6 +18,7 @@
|
||||
|
||||
#include "nsMIMEBasicBodyPart.h"
|
||||
#include "nsxpfcCIID.h"
|
||||
#include "nspr.h"
|
||||
|
||||
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
|
||||
static NS_DEFINE_IID(kMIMEBodyPartIID, NS_IMIME_BODY_PART_IID);
|
||||
@ -25,11 +26,16 @@ static NS_DEFINE_IID(kMIMEBodyPartIID, NS_IMIME_BODY_PART_IID);
|
||||
nsMIMEBasicBodyPart :: nsMIMEBasicBodyPart() : nsMIMEBodyPart()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
|
||||
mMimeBasicPart = nsnull;
|
||||
}
|
||||
|
||||
nsMIMEBasicBodyPart :: ~nsMIMEBasicBodyPart()
|
||||
{
|
||||
if (nsnull != mMimeBasicPart)
|
||||
{
|
||||
mime_basicPart_free_all(mMimeBasicPart);
|
||||
PR_Free (mMimeBasicPart);
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMPL_ADDREF(nsMIMEBasicBodyPart)
|
||||
@ -41,3 +47,35 @@ nsresult nsMIMEBasicBodyPart::Init()
|
||||
return (nsMIMEBodyPart::Init());
|
||||
}
|
||||
|
||||
|
||||
nsresult nsMIMEBasicBodyPart::SetBody(nsString& aBody)
|
||||
{
|
||||
char * body = aBody.ToNewCString();
|
||||
|
||||
mMimeBasicPart = (mime_basicPart_t *) PR_Malloc (sizeof (mime_basicPart_t));
|
||||
|
||||
if (mMimeBasicPart == NULL)
|
||||
return MIME_ERR_OUTOFMEMORY; // XXX convert
|
||||
else
|
||||
memset (mMimeBasicPart, 0, sizeof (mime_basicPart_t));
|
||||
|
||||
mMimeBasicPart->content_type = MIME_CONTENT_TEXT;
|
||||
mMimeBasicPart->content_subtype = strdup ("plain");
|
||||
mMimeBasicPart->content_type_params = strdup ("charset=us-ascii");
|
||||
mMimeBasicPart->encoding_type = MIME_ENCODING_7BIT;
|
||||
|
||||
int ret = mime_basicPart_setDataBuf (mMimeBasicPart, strlen (body), body, TRUE);
|
||||
|
||||
if (MIME_OK != ret)
|
||||
{
|
||||
delete body;
|
||||
mime_basicPart_free_all(mMimeBasicPart);
|
||||
free (mMimeBasicPart);
|
||||
return ret;
|
||||
}
|
||||
|
||||
delete body;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -18,6 +18,7 @@
|
||||
|
||||
#include "nsMIMEMessage.h"
|
||||
#include "nsxpfcCIID.h"
|
||||
#include "nsMIMEBasicBodyPart.h"
|
||||
|
||||
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
|
||||
static NS_DEFINE_IID(kIMessageIID, NS_IMESSAGE_IID);
|
||||
@ -27,10 +28,14 @@ nsMIMEMessage :: nsMIMEMessage() : nsMessage()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
mBodyType = nsMIMEBodyType_empty;
|
||||
mBodyPart = nsnull;
|
||||
mMimeMessageT = nsnull;
|
||||
}
|
||||
|
||||
nsMIMEMessage :: ~nsMIMEMessage()
|
||||
{
|
||||
NS_IF_RELEASE(mBodyPart);
|
||||
mime_message_free_all(mMimeMessageT);
|
||||
}
|
||||
|
||||
NS_IMPL_ADDREF(nsMIMEMessage)
|
||||
@ -59,6 +64,10 @@ nsresult nsMIMEMessage::QueryInterface(REFNSIID aIID, void** aInstancePtr)
|
||||
|
||||
nsresult nsMIMEMessage::Init()
|
||||
{
|
||||
mMimeMessageT = (mime_message_t *) mime_malloc (sizeof (mime_message_t));
|
||||
|
||||
memset (mMimeMessageT, 0, sizeof (mime_message_t));
|
||||
|
||||
return (nsMessage::Init());
|
||||
}
|
||||
|
||||
@ -78,12 +87,50 @@ nsresult nsMIMEMessage::GetHeader(nsString& aHeaderName, nsString& aHeaderValue)
|
||||
}
|
||||
|
||||
|
||||
|
||||
nsresult nsMIMEMessage::AddAttachment(nsString& aAttachment, nsMIMEEncoding aMIMEEncoding)
|
||||
{
|
||||
return (NS_OK);
|
||||
}
|
||||
|
||||
nsresult nsMIMEMessage::SetBody(nsString& aBody)
|
||||
{
|
||||
|
||||
nsMIMEBasicBodyPart * basic = nsnull;
|
||||
|
||||
/*
|
||||
* By default (for now) lets just create a MIMEBasicPart for the Body.
|
||||
*
|
||||
* This method overrides that in nsMessage since the consumer has
|
||||
* explicitly asked for a MIME message
|
||||
*/
|
||||
|
||||
NS_IF_RELEASE(mBodyPart);
|
||||
|
||||
nsresult res = NS_OK;
|
||||
|
||||
static NS_DEFINE_IID(kIMIMEBodyPartCID, NS_IMIME_BODY_PART_IID);
|
||||
static NS_DEFINE_IID(kCMIMEBasicBodyPartCID, NS_MIME_BASIC_BODY_PART_CID);
|
||||
|
||||
res = nsRepository::CreateInstance(kCMIMEBasicBodyPartCID, nsnull, kIMIMEBodyPartCID, (void**)&mBodyPart);
|
||||
|
||||
if (NS_OK != res)
|
||||
return res;
|
||||
|
||||
basic = (nsMIMEBasicBodyPart *) mBodyPart;
|
||||
|
||||
basic->Init();
|
||||
|
||||
//mime_message_create(body, nsnull, MIME_ENCODING_UNINITIALIZED, &mMimeMessageT);
|
||||
|
||||
mMimeMessageT = (mime_message_t *) mime_malloc (sizeof (mime_message_t));
|
||||
|
||||
basic->SetBody(aBody);
|
||||
|
||||
mime_message_addBasicPart(mMimeMessageT, basic->mMimeBasicPart, FALSE);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
nsresult nsMIMEMessage::AddText(nsString& aText, nsMIMEEncoding aMIMEEncoding)
|
||||
{
|
||||
return (NS_OK);
|
||||
|
Loading…
x
Reference in New Issue
Block a user