dmpspserverresponse.cpp 1.9 KB
/**************************************************************************
* file:              dmpspserverresponse.cpp

* Author:            wanzhongping
* Date:              2021-01-14 18:14:57
* Email:             zhongpingw@chinadci.com
* copyright:         广州城市信息研究所有限公司
***************************************************************************/
#include "dmpspserverresponse.h"
#include "dmplogger.h"
#include <boost/format.hpp>

DmpSpServerResponse::DmpSpServerResponse(SP_HttpResponse* response)
{
    sp_response_ = response;
    Clear();
}

void DmpSpServerResponse::SetHeader(const std::string &key, const std::string &value)
{
    sp_response_->addHeader(key.c_str(), value.c_str());
}

void DmpSpServerResponse::RemoveHeader(const std::string &key)
{
    sp_response_->removeHeader(key.c_str());
}

std::string DmpSpServerResponse::Header(const std::string &key) const
{
    return sp_response_->getHeaderValue(key.c_str());
}

ParameterMap DmpSpServerResponse::Headers() const
{
    ParameterMap headers;
    for(int i = 0; i < sp_response_->getHeaderCount(); i++) {
		headers[sp_response_->getHeaderName(i)] = sp_response_->getHeaderValue(i);
	}
    return headers;
}

int DmpSpServerResponse::statusCode() const 
{
    return sp_response_->getStatusCode();
}
void DmpSpServerResponse::setStatusCode(int code)
{
    sp_response_->setStatusCode(code);
}

void DmpSpServerResponse::Write(const std::string data)
{
    sp_response_->appendContent(data.c_str(),data.size());
}

void DmpSpServerResponse::WriteContent(const void * content, int length)
{
    sp_response_->appendContent(content, length);
}

void DmpSpServerResponse::SendError(int code, const std::string &message)
{
    Clear();
    setStatusCode(code);
    SetHeader("Content-Type", "text/html;charset=utf-8");
    Write(message);
}

void DmpSpServerResponse::Clear()
{
    for(int i=0; i< sp_response_->getHeaderCount(); i++)
    {
        sp_response_->removeHeader(i);
    }
}