Added methods to find additional headers and set/get header parameters.
git-svn-id: http://voip.null.ro/svn/yate@1610 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
parent
03335a7dcb
commit
3350f4a56c
|
@ -321,6 +321,53 @@ MimeBody::~MimeBody()
|
||||||
DDebug(DebugAll,"MimeBody::~MimeBody() '%s' [%p]",m_type.c_str(),this);
|
DDebug(DebugAll,"MimeBody::~MimeBody() '%s' [%p]",m_type.c_str(),this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Find an additional header line by its name
|
||||||
|
MimeHeaderLine* MimeBody::findHdr(const char* name, const MimeHeaderLine* start) const
|
||||||
|
{
|
||||||
|
ObjList* o = m_headers.skipNull();
|
||||||
|
if (!o)
|
||||||
|
return 0;
|
||||||
|
// Find start point
|
||||||
|
if (start)
|
||||||
|
for (; o; o = o->skipNext())
|
||||||
|
if (start == o->get()) {
|
||||||
|
o = o->skipNext();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// Find the header
|
||||||
|
for (; o; o = o->skipNext()) {
|
||||||
|
MimeHeaderLine* hdr = static_cast<MimeHeaderLine*>(o->get());
|
||||||
|
if (hdr->name() &= name)
|
||||||
|
return hdr;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Replace the value of an existing parameter or add a new one
|
||||||
|
bool MimeBody::setParam(const char* name, const char* value, const char* header)
|
||||||
|
{
|
||||||
|
MimeHeaderLine* hdr = (!(header && *header)) ? &m_type : findHdr(header);
|
||||||
|
if (hdr)
|
||||||
|
hdr->setParam(name,value);
|
||||||
|
return (hdr != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove a header parameter
|
||||||
|
bool MimeBody::delParam(const char* name, const char* header)
|
||||||
|
{
|
||||||
|
MimeHeaderLine* hdr = (!(header && *header)) ? &m_type : findHdr(header);
|
||||||
|
if (hdr)
|
||||||
|
hdr->delParam(name);
|
||||||
|
return (hdr != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get a header parameter
|
||||||
|
const NamedString* MimeBody::getParam(const char* name, const char* header) const
|
||||||
|
{
|
||||||
|
const MimeHeaderLine* hdr = (!(header && *header)) ? &m_type : findHdr(header);
|
||||||
|
return hdr ? hdr->getParam(name) : 0;
|
||||||
|
}
|
||||||
|
|
||||||
const DataBlock& MimeBody::getBody() const
|
const DataBlock& MimeBody::getBody() const
|
||||||
{
|
{
|
||||||
if (m_body.null())
|
if (m_body.null())
|
||||||
|
|
36
yatemime.h
36
yatemime.h
|
@ -256,6 +256,42 @@ public:
|
||||||
inline void removeHdr(MimeHeaderLine* hdr)
|
inline void removeHdr(MimeHeaderLine* hdr)
|
||||||
{ if (hdr) m_headers.remove(hdr); }
|
{ if (hdr) m_headers.remove(hdr); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find an additional header line by its name. The names are compared case insensitive
|
||||||
|
* @param name The name of the header to find
|
||||||
|
* @param start The starting point in the list. 0 to start from the beginning
|
||||||
|
* @return Pointer to MimeHeaderLine or 0 if not found
|
||||||
|
*/
|
||||||
|
MimeHeaderLine* findHdr(const char* name, const MimeHeaderLine* start = 0) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replace the value of an existing parameter or add a new one
|
||||||
|
* @param name Parameter's name
|
||||||
|
* @param value Parameter's value
|
||||||
|
* @param header Header whose parameter will be changed.
|
||||||
|
* Set to 0 to use the body's content type header
|
||||||
|
* @return False if the header doesn't exist
|
||||||
|
*/
|
||||||
|
bool setParam(const char* name, const char* value = 0, const char* header = 0);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove a header parameter
|
||||||
|
* @param name Parameter's name
|
||||||
|
* @param header Header whose parameter will be removed.
|
||||||
|
* Set to 0 to use the body's content type header
|
||||||
|
* @return False if the header doesn't exist
|
||||||
|
*/
|
||||||
|
bool delParam(const char* name, const char* header = 0);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a header parameter
|
||||||
|
* @param name Parameter's name
|
||||||
|
* @param header Header whose parameter will be retrived.
|
||||||
|
* Set to 0 to use the body's content type header
|
||||||
|
* @return Pointer to the desired parameter or 0 if not found
|
||||||
|
*/
|
||||||
|
const NamedString* getParam(const char* name, const char* header = 0) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrive the binary encoding of this MIME body
|
* Retrive the binary encoding of this MIME body
|
||||||
* @return Block of binary data
|
* @return Block of binary data
|
||||||
|
|
Loading…
Reference in New Issue