Newer
Older
Import / projects / Gameloft / glwebtools / source / glwebtools / glwebtools_urlresponse.cpp
#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