MaxScale/server/core/httpresponse.cc
Markus Mäkelä 900bf2db5a MXS-1220: Take the resource handler into use
The resource handler system is now usable but it doesn't perform anything
useful. Although, this will allows it to be tested for correctness.

Minor fixes to HttpResponse output and renaming of functions.
2017-05-04 09:10:33 +03:00

70 lines
1.6 KiB
C++

/*
* Copyright (c) 2016 MariaDB Corporation Ab
*
* Use of this software is governed by the Business Source License included
* in the LICENSE.TXT file and at www.mariadb.com/bsl11.
*
* Change Date: 2019-07-01
*
* On the date above, in accordance with the Business Source License, use
* of this software will be governed by version 2 or later of the General
* Public License.
*/
#include "maxscale/httpresponse.hh"
#include "maxscale/admin.hh"
#include <string>
#include <sstream>
#include <maxscale/alloc.h>
#include <sys/time.h>
using std::string;
using std::stringstream;
HttpResponse::HttpResponse(enum http_code code, string response):
m_body(response),
m_code(code)
{
m_headers["Date"] = http_get_date();
// TODO: Add proper modification timestamps
m_headers["Last-Modified"] = m_headers["Date"];
// TODO: Add proper ETags
m_headers["ETag"] = "bm90LXlldC1pbXBsZW1lbnRlZAo=";
enum http_auth auth = mxs_admin_get_config().auth;
if (auth != HTTP_AUTH_NONE)
{
m_headers["WWW-Authenticate"] = http_auth_to_string(auth);
}
}
HttpResponse::~HttpResponse()
{
}
void HttpResponse::add_header(string name, string value)
{
m_headers[name] = value;
}
string HttpResponse::get_response() const
{
stringstream response;
response << "HTTP/1.1 " << http_code_to_string(m_code) << "\r\n";
for (map<string, string>::const_iterator it = m_headers.begin();
it != m_headers.end(); it++)
{
response << it->first << ": " << it->second << "\r\n";
}
/** End of headers, add the body */
response << "\r\n" << m_body;
return response.str();
}