Abstract MIME data holder. More...
#include <yatemime.h>
Public Member Functions | |
virtual | ~MimeBody () |
virtual void * | getObject (const String &name) const |
const MimeHeaderLine & | getType () const |
MimeBody * | getFirst (const String &type) const |
const ObjList & | headers () const |
void | appendHdr (MimeHeaderLine *hdr) |
void | removeHdr (MimeHeaderLine *hdr, bool delobj=true) |
MimeHeaderLine * | findHdr (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 NamedString * | getParam (const char *name, const char *header=0) const |
const DataBlock & | getBody () const |
const DataBlock & | body () const |
virtual bool | isSDP () const |
virtual bool | isMultipart () const |
virtual MimeBody * | clone () const =0 |
Static Public Member Functions | |
static MimeBody * | build (const char *buf, int len, const MimeHeaderLine &type) |
static String * | getUnfoldedLine (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 |
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.
virtual ~MimeBody | ( | ) | [virtual] |
Destructor
Constructor to be used only by derived classes. Converts the MIME type string to lower case
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
type | The content type header line |
void appendHdr | ( | MimeHeaderLine * | hdr | ) | [inline] |
Append an additional header line to this body
hdr | The header line to append |
const DataBlock& body | ( | ) | const [inline] |
Get the binary data of this MIME body without building it.
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
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 |
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
buf | Destination string |
References MimeHeaderLine::buildHeaders().
virtual MimeBody* clone | ( | ) | const [pure virtual] |
Duplicate this MIME body
Implemented in MimeMultipartBody, MimeSdpBody, MimeBinaryBody, MimeStringBody, and MimeLinesBody.
bool delParam | ( | const char * | name, | |
const char * | header = 0 | |||
) |
Remove a header parameter
name | Parameter's name | |
header | Header whose parameter will be removed. Set to 0 to use the body's content type header |
MimeHeaderLine* findHdr | ( | const String & | name, | |
const MimeHeaderLine * | start = 0 | |||
) | const |
Find an additional header line by its name. The names are compared case insensitive
name | The name of the header to find | |
start | The starting point in the list. 0 to start from the beginning |
const DataBlock& getBody | ( | ) | const |
Retrieve 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
Get the first body that matches a requested type, descends into multiparts
type | Name of the MIME type to search for |
virtual void* getObject | ( | const String & | name | ) | const [virtual] |
RTTI method, get a pointer to a derived class given the class name
name | Name of the class we are asking for |
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
name | Parameter's name | |
header | Header whose parameter will be retrieved. Set to 0 to use the body's content type header |
const MimeHeaderLine& getType | ( | ) | const [inline] |
Retrieve the MIME type of this body
static String* getUnfoldedLine | ( | const char *& | buf, | |
int & | len | |||
) | [static] |
Utility method, returns an unfolded line and advances the pointer
buf | Reference to pointer to start of buffer data | |
len | Reference to variable holding buffer length |
const ObjList& headers | ( | ) | const [inline] |
Retrieve the additional headers of this MIME body (other then Content-Type)
virtual bool isMultipart | ( | ) | const [inline, virtual] |
Check if this body is multipart (can hold other MIME bodies)
Reimplemented in MimeMultipartBody.
virtual bool isSDP | ( | ) | const [inline, virtual] |
Check if this body is a Session Description Protocol
Reimplemented in MimeSdpBody.
void removeHdr | ( | MimeHeaderLine * | hdr, | |
bool | delobj = true | |||
) | [inline] |
Remove an additional header line from this body
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
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 |
Block of binary data that buildBody() must fill