The internal header directory conflicted with in-source builds causing a build failure. This is fixed by renaming the internal header directory to something other than maxscale. The renaming pointed out a few problems in a couple of source files that appeared to include internal headers when the headers were in fact public headers. Fixed maxctrl in-source builds by making the copying of the sources optional.
		
			
				
	
	
		
			92 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#pragma once
 | 
						|
/*
 | 
						|
 * 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: 2020-01-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/cppdefs.hh>
 | 
						|
 | 
						|
#include <map>
 | 
						|
#include <string>
 | 
						|
#include <tr1/memory>
 | 
						|
#include <microhttpd.h>
 | 
						|
 | 
						|
#include <maxscale/jansson.hh>
 | 
						|
#include <maxscale/http.hh>
 | 
						|
 | 
						|
/**
 | 
						|
 * A list of default headers that are generated with each response
 | 
						|
 */
 | 
						|
#define HTTP_RESPONSE_HEADER_DATE          "Date"
 | 
						|
#define HTTP_RESPONSE_HEADER_LAST_MODIFIED "Last-Modified"
 | 
						|
#define HTTP_RESPONSE_HEADER_ETAG          "ETag"
 | 
						|
#define HTTP_RESPONSE_HEADER_ACCEPT        "Accept"
 | 
						|
#define HTTP_RESPONSE_HEADER_CONTENT_TYPE  "Content-Type"
 | 
						|
 | 
						|
typedef std::map<std::string, std::string> Headers;
 | 
						|
 | 
						|
class HttpResponse
 | 
						|
{
 | 
						|
public:
 | 
						|
    /**
 | 
						|
     * @brief Create new HTTP response
 | 
						|
     *
 | 
						|
     * @param response Response body
 | 
						|
     * @param code     HTTP return code
 | 
						|
     */
 | 
						|
    HttpResponse(int code = MHD_HTTP_OK, json_t* response = NULL);
 | 
						|
    HttpResponse(const HttpResponse& response);
 | 
						|
    HttpResponse& operator = (const HttpResponse& response);
 | 
						|
 | 
						|
    ~HttpResponse();
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief Get the response body
 | 
						|
     *
 | 
						|
     * @return The response body
 | 
						|
     */
 | 
						|
    json_t* get_response() const;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief Drop response body
 | 
						|
     *
 | 
						|
     * This discards the message body.
 | 
						|
     */
 | 
						|
    void drop_response();
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief Get the HTTP response code
 | 
						|
     *
 | 
						|
     * @return The HTTP response code
 | 
						|
     */
 | 
						|
    int get_code() const;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief Add an extra header to this response
 | 
						|
     *
 | 
						|
     * @param key   Header name
 | 
						|
     * @param value Header value
 | 
						|
     */
 | 
						|
    void add_header(const std::string& key, const std::string& value);
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief Get request headers
 | 
						|
     *
 | 
						|
     * @return Headers of this request
 | 
						|
     */
 | 
						|
    const Headers& get_headers() const;
 | 
						|
 | 
						|
private:
 | 
						|
    json_t* m_body;    /**< Message body */
 | 
						|
    int     m_code;    /**< The HTTP code for the response */
 | 
						|
    Headers m_headers; /**< Extra headers */
 | 
						|
};
 |