#include <glwebtools/internal/glwebtools_default_config.h>
#include <glwebtools/internal/glwebtools_urlresponse.h>
#include <glwebtools/glwebtools_error.h>
namespace glwebtools
{
long UrlResponseCore::GetResponseCode() const
{
return m_responseCode;
}
glwebtools::Error UrlResponseCore::GetData(const void*& dataPtr, size_t& dataSize) const
{
if(m_data)
{
return m_data->GetData(dataPtr, dataSize) ? glwebtools::E_SUCCESS : glwebtools::E_INVALID_DATA;
}
return glwebtools::E_MEMORY_ERROR;
}
glwebtools::Error UrlResponseCore::GetDataAsString(glwebtools::String& outString) const
{
if(m_data)
{
const void* dataPtr;
size_t dataSize;
glwebtools::Error result = GetData(dataPtr, dataSize );
if(GLWEBTOOLS_SUCCESS(result))
{
if (dataPtr)
outString.append(static_cast<const char*>(dataPtr), dataSize);
return glwebtools::E_SUCCESS;
}
else
{
return result;
}
}
return glwebtools::E_MEMORY_ERROR;
}
const char* UrlResponseCore::GetHeaderField(const char* fieldId) const
{
if(fieldId)
{
glwebtools::String key = fieldId;
HeaderMapType::const_iterator node = m_headerFields.find(fieldId);
if(node != m_headerFields.end())
{
return node->second.c_str();
}
return 0;
}
return 0;
}
//private:
UrlResponseCore::UrlResponseCore()
{
m_responseCode = 0;
m_data = GLWEBTOOLS_NEW MutableData();
}
UrlResponseCore::~UrlResponseCore()
{
if(m_data)
{
GLWEBTOOLS_DELETE(m_data);
}
}
void UrlResponseCore::SetResponseCode(long code)
{
m_responseCode = code;
}
bool UrlResponseCore::AddHeaderField(const char* key, const char* value)
{
if(key && value)
{
glwebtools::String keystr = key;
glwebtools::String valuestr = value;
m_headerFields[key] = value;
return true;
}
return false;
}
bool UrlResponseCore::AddData(const void* data, size_t size)
{
if(!m_data)
{
m_data = GLWEBTOOLS_NEW MutableData();
}
if(m_data)
{
return m_data->AppendData(data, size);
}
else
{
return false;
}
}
}//namespace glwebtools