MimeBody Class Reference

Abstract MIME data holder. More...

#include <yatemime.h>

Inheritance diagram for MimeBody:

GenObject MimeBinaryBody MimeLinesBody MimeMultipartBody MimeSdpBody MimeStringBody

List of all members.

Public Member Functions

virtual ~MimeBody ()
virtual void * getObject (const String &name) const
const MimeHeaderLinegetType () const
const ObjListheaders () const
void appendHdr (MimeHeaderLine *hdr)
void removeHdr (MimeHeaderLine *hdr, bool delobj=true)
MimeHeaderLinefindHdr (const String &name, const MimeHeaderLine *start=0) const
void buildHeaders (String &buf)
bool setParam (const char *name, const char *value=0, const char *header=0)
bool delParam (const char *name, const char *header=0)
const NamedStringgetParam (const char *name, const char *header=0) const
const DataBlockgetBody () const
const DataBlockbody () const
virtual bool isSDP () const
virtual bool isMultipart () const
virtual MimeBodyclone () const =0

Static Public Member Functions

static MimeBodybuild (const char *buf, int len, const MimeHeaderLine &type)
static StringgetUnfoldedLine (const char *&buf, int &len)

Protected Member Functions

 MimeBody (const String &type)
 MimeBody (const MimeHeaderLine &type)
virtual void buildBody () const =0

Protected Attributes

DataBlock m_body
ObjList m_headers


Detailed Description

Abstract MIME data holder.

Abstract base class for holding Multipurpose Internet Mail Extensions data. Keeps a Content-Type header line with body type and parameters and any additional header lines the body may have. The body type contains lower case characters.


Constructor & Destructor Documentation

virtual ~MimeBody (  )  [virtual]

Destructor

MimeBody ( const String type  )  [protected]

Constructor to be used only by derived classes. Converts the MIME type string to lower case

Parameters:
type The value of the Content-Type header line

MimeBody ( const MimeHeaderLine type  )  [protected]

Constructor to be used only by derived classes. Builds this body from a header line. Converts the MIME type string to lower case

Parameters:
type The content type header line


Member Function Documentation

void appendHdr ( MimeHeaderLine hdr  )  [inline]

Append an additional header line to this body

Parameters:
hdr The header line to append

const DataBlock& body (  )  const [inline]

Get the binary data of this MIME body without building it.

Returns:
Block of binary data

static MimeBody* build ( const char *  buf,
int  len,
const MimeHeaderLine type 
) [static]

Method to build a MIME body from a type and data buffer. Unknown body types are built into a binary body. Exactly 1 leading CRLF is removed from the beginning of the buffer if found before building it

Parameters:
buf Pointer to buffer of data just after the body headers
len Length of data in buffer
type The header line declaring the body's content. Usually this is a Content-Type header line
Returns:
Newly allocated MIME body or NULL if the buffer is empty

virtual void buildBody (  )  const [protected, pure virtual]

Method that is called internally to build the binary encoded body

Implemented in MimeMultipartBody, MimeSdpBody, MimeBinaryBody, MimeStringBody, and MimeLinesBody.

void buildHeaders ( String buf  )  [inline]

Build a string with this body's header lines

Parameters:
buf Destination string

References MimeHeaderLine::buildHeaders().

virtual MimeBody* clone (  )  const [pure virtual]

Duplicate this MIME body

Returns:
Copy of this MIME body

Implemented in MimeMultipartBody, MimeSdpBody, MimeBinaryBody, MimeStringBody, and MimeLinesBody.

bool delParam ( const char *  name,
const char *  header = 0 
)

Remove a header parameter

Parameters:
name Parameter's name
header Header whose parameter will be removed. Set to 0 to use the body's content type header
Returns:
False if the header doesn't exist

MimeHeaderLine* findHdr ( const String name,
const MimeHeaderLine start = 0 
) const

Find an additional header line by its name. The names are compared case insensitive

Parameters:
name The name of the header to find
start The starting point in the list. 0 to start from the beginning
Returns:
Pointer to MimeHeaderLine or 0 if not found

const DataBlock& getBody (  )  const

Retrive the binary encoding of this MIME body. Build the body if empty. The body doesn't contain the Content-Type header or the additional headers

Returns:
Block of binary data

virtual void* getObject ( const String name  )  const [virtual]

RTTI method, get a pointer to a derived class given the class name

Parameters:
name Name of the class we are asking for
Returns:
Pointer to the requested class or NULL if this object doesn't implement it

Reimplemented from GenObject.

Reimplemented in MimeMultipartBody, MimeSdpBody, MimeBinaryBody, MimeStringBody, and MimeLinesBody.

const NamedString* getParam ( const char *  name,
const char *  header = 0 
) const

Get a header parameter

Parameters:
name Parameter's name
header Header whose parameter will be retrived. Set to 0 to use the body's content type header
Returns:
Pointer to the desired parameter or 0 if not found

const MimeHeaderLine& getType (  )  const [inline]

Retrive the MIME type of this body

Returns:
Name of the MIME type/subtype

static String* getUnfoldedLine ( const char *&  buf,
int &  len 
) [static]

Utility method, returns an unfolded line and advances the pointer

Parameters:
buf Reference to pointer to start of buffer data
len Reference to variable holding buffer length
Returns:
Newly allocated String holding the line of text

const ObjList& headers (  )  const [inline]

Retrive the additional headers of this MIME body (other then Content-Type)

Returns:
The list of header lines of this MIME body

virtual bool isMultipart (  )  const [inline, virtual]

Check if this body is multipart (can hold other MIME bodies)

Returns:
True if this body is multipart

Reimplemented in MimeMultipartBody.

virtual bool isSDP (  )  const [inline, virtual]

Check if this body is a Session Description Protocol

Returns:
True if this body holds a SDP

Reimplemented in MimeSdpBody.

void removeHdr ( MimeHeaderLine hdr,
bool  delobj = true 
) [inline]

Remove an additional header line from this body

Parameters:
hdr The header line to remove
delobj True to delete the header, false to remove from list without deleting it

bool setParam ( const char *  name,
const char *  value = 0,
const char *  header = 0 
)

Replace the value of an existing parameter or add a new one

Parameters:
name Parameter's name
value Parameter's value
header Header whose parameter will be changed. Set to 0 to use the body's content type header
Returns:
False if the header doesn't exist


Member Data Documentation

DataBlock m_body [mutable, protected]

Block of binary data that buildBody() must fill

ObjList m_headers [protected]

Additional body headers (other then Content-Type)


The documentation for this class was generated from the following file:

Generated on Sun Dec 7 21:36:12 2008 for Yate by  doxygen 1.5.7.1