blob: 0477233c2a35019911b2c75519fbb68ec84a642f [file] [log] [blame]
#pragma once
#include <boost/asio.hpp>
#include "crow/ci_map.h"
#include "crow/common.h"
#include "crow/query_string.h"
namespace crow {
template <typename T>
inline const std::string& get_header_value(const T& headers,
const std::string& key) {
if (headers.count(key)) {
return headers.find(key)->second;
}
static std::string empty;
return empty;
}
struct DetachHelper;
struct request {
HTTPMethod method;
std::string raw_url;
std::string url;
query_string url_params;
ci_map headers;
std::string body;
void* middleware_context{};
boost::asio::io_service* io_service{};
request() : method(HTTPMethod::Get) {}
request(HTTPMethod method, std::string raw_url, std::string url,
query_string url_params, ci_map headers, std::string body)
: method(method),
raw_url(std::move(raw_url)),
url(std::move(url)),
url_params(std::move(url_params)),
headers(std::move(headers)),
body(std::move(body)) {}
void add_header(const std::string& key, const std::string& value) {
headers.emplace(std::move(key), std::move(value));
}
const std::string& get_header_value(const std::string& key) const {
return crow::get_header_value(headers, key);
}
/*
// These APIs were here, and it's unclear what their intent was, when
// io_service is a public member. They are commented out for now
template <typename CompletionHandler>
void post(CompletionHandler handler) {
io_service->post(handler);
}
template <typename CompletionHandler>
void dispatch(CompletionHandler handler) {
io_service->dispatch(handler);
}
*/
};
}