Revert httplib.h changes due to being external

This commit is contained in:
Michael Klimenko 2024-01-29 08:55:28 +01:00
parent 2dcf37c10b
commit 4e53e000d7

View file

@ -223,7 +223,6 @@ using socket_t = int;
#include <string>
#include <sys/stat.h>
#include <thread>
#include <utility>
#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
#ifdef _WIN32
@ -706,7 +705,7 @@ public:
Server &set_file_request_handler(Handler handler);
Server &set_error_handler(HandlerWithResponse handler);
Server &set_error_handler(const Handler& handler);
Server &set_error_handler(Handler handler);
Server &set_exception_handler(ExceptionHandler handler);
Server &set_pre_routing_handler(HandlerWithResponse handler);
Server &set_post_routing_handler(Handler handler);
@ -782,7 +781,7 @@ private:
bool dispatch_request(Request &req, Response &res, const Handlers &handlers);
bool
dispatch_request_for_content_reader(Request &req, Response &res,
const ContentReader& content_reader,
ContentReader content_reader,
const HandlersForContentReader &handlers);
bool parse_request_line(const char *s, Request &req);
@ -805,7 +804,7 @@ private:
MultipartContentHeader multipart_header,
ContentReceiver multipart_receiver);
bool read_content_core(Stream &strm, Request &req, Response &res,
const ContentReceiver& receiver,
ContentReceiver receiver,
MultipartContentHeader multipart_header,
ContentReceiver multipart_receiver);
@ -911,8 +910,8 @@ public:
explicit ClientImpl(const std::string &host, int port);
explicit ClientImpl(const std::string &host, int port,
std::string client_cert_path,
std::string client_key_path);
const std::string &client_cert_path,
const std::string &client_key_path);
virtual ~ClientImpl();
@ -938,7 +937,7 @@ public:
Result Get(const std::string &path, ResponseHandler response_handler,
ContentReceiver content_receiver, Progress progress);
Result Get(const std::string &path, const Headers &headers,
ResponseHandler response_handler, const ContentReceiver& content_receiver,
ResponseHandler response_handler, ContentReceiver content_receiver,
Progress progress);
Result Get(const std::string &path, const Params &params,
@ -947,8 +946,8 @@ public:
const Headers &headers, ContentReceiver content_receiver,
Progress progress = nullptr);
Result Get(const std::string &path, const Params &params,
const Headers &headers, const ResponseHandler& response_handler,
const ContentReceiver& content_receiver, const Progress& progress = nullptr);
const Headers &headers, ResponseHandler response_handler,
ContentReceiver content_receiver, Progress progress = nullptr);
Result Head(const std::string &path);
Result Head(const std::string &path, const Headers &headers);
@ -1791,7 +1790,7 @@ void hosted_at(const std::string &hostname, std::vector<std::string> &addrs);
std::string append_query_params(const std::string &path, const Params &params);
std::pair<std::string, std::string> make_range_header(const Ranges& ranges);
std::pair<std::string, std::string> make_range_header(Ranges ranges);
std::pair<std::string, std::string>
make_basic_authentication_header(const std::string &username,
@ -1809,12 +1808,12 @@ void read_file(const std::string &path, std::string &out);
std::string trim_copy(const std::string &s);
void split(const char *b, const char *e, char d,
const std::function<void(const char *, const char *)>& fn);
std::function<void(const char *, const char *)> fn);
bool process_client_socket(socket_t sock, time_t read_timeout_sec,
time_t read_timeout_usec, time_t write_timeout_sec,
time_t write_timeout_usec,
const std::function<bool(Stream &)>& callback);
std::function<bool(Stream &)> callback);
socket_t create_client_socket(
const std::string &host, const std::string &ip, int port,
@ -2232,8 +2231,8 @@ inline void read_file(const std::string &path, std::string &out) {
fs.seekg(0, std::ios_base::end);
auto size = fs.tellg();
fs.seekg(0);
out.resize(size);
fs.read(&out[0], size);
out.resize(static_cast<size_t>(size));
fs.read(&out[0], static_cast<std::streamsize>(size));
}
inline std::string file_extension(const std::string &path) {
@ -2262,7 +2261,7 @@ inline std::string trim_copy(const std::string &s) {
}
inline void split(const char *b, const char *e, char d,
const std::function<void(const char *, const char *)>& fn) {
std::function<void(const char *, const char *)> fn) {
size_t i = 0;
size_t beg = 0;
@ -2625,7 +2624,7 @@ inline bool process_client_socket(socket_t sock, time_t read_timeout_sec,
time_t read_timeout_usec,
time_t write_timeout_sec,
time_t write_timeout_usec,
const std::function<bool(Stream &)>& callback) {
std::function<bool(Stream &)> callback) {
SocketStream strm(sock, read_timeout_sec, read_timeout_usec,
write_timeout_sec, write_timeout_usec);
return callback(strm);
@ -3038,7 +3037,7 @@ find_content_type(const std::string &path,
case "svg"_t: return "image/svg+xml";
case "webp"_t: return "image/webp";
case "ico"_t: return "image/x-icon";
case "tif"_t:
case "tif"_t: return "image/tiff";
case "tiff"_t: return "image/tiff";
case "jpg"_t:
case "jpeg"_t: return "image/jpeg";
@ -3489,8 +3488,8 @@ inline bool read_headers(Stream &strm, Headers &headers) {
}
inline bool read_content_with_length(Stream &strm, uint64_t len,
const Progress& progress,
const ContentReceiverWithProgress& out) {
Progress progress,
ContentReceiverWithProgress out) {
char buf[CPPHTTPLIB_RECV_BUFSIZ];
uint64_t r = 0;
@ -3522,7 +3521,7 @@ inline void skip_content_with_length(Stream &strm, uint64_t len) {
}
inline bool read_content_without_length(Stream &strm,
const ContentReceiverWithProgress& out) {
ContentReceiverWithProgress out) {
char buf[CPPHTTPLIB_RECV_BUFSIZ];
uint64_t r = 0;
for (;;) {
@ -3984,12 +3983,12 @@ inline bool parse_range_header(const std::string &s, Ranges &ranges) try {
if (std::regex_match(b, e, cm, re_another_range)) {
ssize_t first = -1;
if (!cm.str(1).empty()) {
first = std::stoll(cm.str(1));
first = static_cast<ssize_t>(std::stoll(cm.str(1)));
}
ssize_t last = -1;
if (!cm.str(2).empty()) {
last = std::stoll(cm.str(2));
last = static_cast<ssize_t>(std::stoll(cm.str(2)));
}
if (first != -1 && last != -1 && first > last) {
@ -4255,7 +4254,8 @@ inline std::string make_multipart_data_boundary() {
inline bool is_multipart_boundary_chars_valid(const std::string &boundary) {
auto valid = true;
for (char c : boundary) {
for (size_t i = 0; i < boundary.size(); i++) {
auto c = boundary[i];
if (!std::isalnum(c) && c != '-' && c != '_') {
valid = false;
break;
@ -4707,7 +4707,7 @@ inline bool parse_www_authenticate(const Response &res,
s = s.substr(pos + 1);
auto beg = std::sregex_iterator(s.begin(), s.end(), re);
for (auto i = beg; i != std::sregex_iterator(); ++i) {
const auto& m = *i;
auto m = *i;
auto key = s.substr(static_cast<size_t>(m.position(1)),
static_cast<size_t>(m.length(1)));
auto val = m.length(2) > 0
@ -4802,7 +4802,7 @@ inline std::string append_query_params(const std::string &path,
}
// Header utilities
inline std::pair<std::string, std::string> make_range_header(const Ranges& ranges) {
inline std::pair<std::string, std::string> make_range_header(Ranges ranges) {
std::string field = "bytes=";
auto i = 0;
for (auto r : ranges) {
@ -4949,7 +4949,7 @@ inline void Response::set_content_provider(
set_header("Content-Type", content_type);
content_length_ = in_length;
if (in_length > 0) { content_provider_ = std::move(provider); }
content_provider_resource_releaser_ = std::move(resource_releaser);
content_provider_resource_releaser_ = resource_releaser;
is_chunked_content_provider_ = false;
}
@ -4959,7 +4959,7 @@ inline void Response::set_content_provider(
set_header("Content-Type", content_type);
content_length_ = 0;
content_provider_ = detail::ContentProviderAdapter(std::move(provider));
content_provider_resource_releaser_ = std::move(resource_releaser);
content_provider_resource_releaser_ = resource_releaser;
is_chunked_content_provider_ = false;
}
@ -4969,7 +4969,7 @@ inline void Response::set_chunked_content_provider(
set_header("Content-Type", content_type);
content_length_ = 0;
content_provider_ = detail::ContentProviderAdapter(std::move(provider));
content_provider_resource_releaser_ = std::move(resource_releaser);
content_provider_resource_releaser_ = resource_releaser;
is_chunked_content_provider_ = true;
}
@ -5010,7 +5010,7 @@ inline SocketStream::SocketStream(socket_t sock, time_t read_timeout_sec,
write_timeout_sec_(write_timeout_sec),
write_timeout_usec_(write_timeout_usec), read_buff_(read_buff_size_, 0) {}
inline SocketStream::~SocketStream() = default;
inline SocketStream::~SocketStream() {}
inline bool SocketStream::is_readable() const {
return select_read(sock_, read_timeout_sec_, read_timeout_usec_) > 0;
@ -5101,7 +5101,7 @@ inline ssize_t BufferStream::read(char *ptr, size_t size) {
#else
auto len_read = buffer.copy(ptr, size, position);
#endif
position += len_read;
position += static_cast<size_t>(len_read);
return static_cast<ssize_t>(len_read);
}
@ -5131,7 +5131,7 @@ inline Server::Server()
#endif
}
inline Server::~Server() = default;
inline Server::~Server() {}
inline Server &Server::Get(const std::string &pattern, Handler handler) {
get_handlers_.push_back(
@ -5241,7 +5241,7 @@ inline Server &Server::set_error_handler(HandlerWithResponse handler) {
return *this;
}
inline Server &Server::set_error_handler(const Handler& handler) {
inline Server &Server::set_error_handler(Handler handler) {
error_handler_ = [handler](const Request &req, Response &res) {
handler(req, res);
return HandlerResponse::Handled;
@ -5618,7 +5618,7 @@ inline bool Server::read_content_with_content_receiver(
}
inline bool Server::read_content_core(Stream &strm, Request &req, Response &res,
const ContentReceiver& receiver,
ContentReceiver receiver,
MultipartContentHeader multipart_header,
ContentReceiver multipart_receiver) {
detail::MultipartFormDataParser multipart_form_data_parser;
@ -5688,7 +5688,7 @@ inline bool Server::handle_file_request(const Request &req, Response &res,
detail::find_content_type(path, file_extension_and_mimetype_map_);
if (type) { res.set_header("Content-Type", type); }
for (const auto &kv : entry.headers) {
res.set_header(kv.first, kv.second);
res.set_header(kv.first.c_str(), kv.second);
}
res.status = req.has_header("Range") ? 206 : 200;
if (!head && file_request_handler_) {
@ -6024,7 +6024,7 @@ inline void Server::apply_ranges(const Request &req, Response &res,
}
inline bool Server::dispatch_request_for_content_reader(
Request &req, Response &res, const ContentReader& content_reader,
Request &req, Response &res, ContentReader content_reader,
const HandlersForContentReader &handlers) {
for (const auto &x : handlers) {
const auto &pattern = x.first;
@ -6202,11 +6202,11 @@ inline ClientImpl::ClientImpl(const std::string &host, int port)
: ClientImpl(host, port, std::string(), std::string()) {}
inline ClientImpl::ClientImpl(const std::string &host, int port,
std::string client_cert_path,
std::string client_key_path)
const std::string &client_cert_path,
const std::string &client_key_path)
: host_(host), port_(port),
host_and_port_(adjust_host_string(host) + ":" + std::to_string(port)),
client_cert_path_(std::move(client_cert_path)), client_key_path_(std::move(client_key_path)) {}
client_cert_path_(client_cert_path), client_key_path_(client_key_path) {}
inline ClientImpl::~ClientImpl() {
std::lock_guard<std::mutex> guard(socket_mutex_);
@ -6579,7 +6579,7 @@ inline bool ClientImpl::redirect(Request &req, Response &res, Error &error) {
return false;
#endif
} else {
ClientImpl cli(next_host, next_port);
ClientImpl cli(next_host.c_str(), next_port);
cli.copy_settings(*this);
return detail::redirect(cli, req, res, path, location, error);
}
@ -6941,7 +6941,7 @@ inline ContentProviderWithoutLength ClientImpl::get_multipart_content_provider(
// state between successive calls
return [&, cur_item, cur_start](size_t offset,
DataSink &sink) mutable -> bool {
if (!offset && !items.empty()) {
if (!offset && items.size()) {
sink.os << detail::serialize_multipart_formdata(items, boundary, false);
return true;
} else if (cur_item < provider_items.size()) {
@ -7056,7 +7056,7 @@ inline Result ClientImpl::Get(const std::string &path,
inline Result ClientImpl::Get(const std::string &path, const Headers &headers,
ResponseHandler response_handler,
const ContentReceiver& content_receiver,
ContentReceiver content_receiver,
Progress progress) {
Request req;
req.method = "GET";
@ -7078,27 +7078,27 @@ inline Result ClientImpl::Get(const std::string &path, const Params &params,
if (params.empty()) { return Get(path, headers); }
std::string path_with_query = append_query_params(path, params);
return Get(path_with_query, headers, std::move(progress));
return Get(path_with_query.c_str(), headers, progress);
}
inline Result ClientImpl::Get(const std::string &path, const Params &params,
const Headers &headers,
ContentReceiver content_receiver,
Progress progress) {
return Get(path, params, headers, nullptr, std::move(content_receiver), std::move(progress));
return Get(path, params, headers, nullptr, content_receiver, progress);
}
inline Result ClientImpl::Get(const std::string &path, const Params &params,
const Headers &headers,
const ResponseHandler& response_handler,
const ContentReceiver& content_receiver,
const Progress& progress) {
ResponseHandler response_handler,
ContentReceiver content_receiver,
Progress progress) {
if (params.empty()) {
return Get(path, headers, response_handler, content_receiver, progress);
}
std::string path_with_query = append_query_params(path, params);
return Get(path_with_query, headers, response_handler,
return Get(path_with_query.c_str(), headers, response_handler,
content_receiver, progress);
}
@ -7201,7 +7201,7 @@ inline Result ClientImpl::Post(const std::string &path, const Headers &headers,
const auto &content_type =
detail::serialize_multipart_formdata_get_content_type(boundary);
const auto &body = detail::serialize_multipart_formdata(items, boundary);
return Post(path, headers, body, content_type);
return Post(path, headers, body, content_type.c_str());
}
inline Result ClientImpl::Post(const std::string &path, const Headers &headers,
@ -7214,7 +7214,7 @@ inline Result ClientImpl::Post(const std::string &path, const Headers &headers,
const auto &content_type =
detail::serialize_multipart_formdata_get_content_type(boundary);
const auto &body = detail::serialize_multipart_formdata(items, boundary);
return Post(path, headers, body, content_type);
return Post(path, headers, body, content_type.c_str());
}
inline Result
@ -8361,7 +8361,7 @@ inline Client::Client(const std::string &host, int port,
: cli_(detail::make_unique<ClientImpl>(host, port, client_cert_path,
client_key_path)) {}
inline Client::~Client() = default;
inline Client::~Client() {}
inline bool Client::is_valid() const {
return cli_ != nullptr && cli_->is_valid();
@ -8421,19 +8421,19 @@ inline Result Client::Get(const std::string &path, const Headers &headers,
}
inline Result Client::Get(const std::string &path, const Params &params,
const Headers &headers, Progress progress) {
return cli_->Get(path, params, headers, std::move(progress));
return cli_->Get(path, params, headers, progress);
}
inline Result Client::Get(const std::string &path, const Params &params,
const Headers &headers,
ContentReceiver content_receiver, Progress progress) {
return cli_->Get(path, params, headers, std::move(content_receiver), std::move(progress));
return cli_->Get(path, params, headers, content_receiver, progress);
}
inline Result Client::Get(const std::string &path, const Params &params,
const Headers &headers,
ResponseHandler response_handler,
ContentReceiver content_receiver, Progress progress) {
return cli_->Get(path, params, headers, std::move(response_handler), std::move(content_receiver),
std::move(progress));
return cli_->Get(path, params, headers, response_handler, content_receiver,
progress);
}
inline Result Client::Head(const std::string &path) { return cli_->Head(path); }
@ -8754,7 +8754,7 @@ inline void Client::enable_server_certificate_verification(bool enabled) {
}
#endif
inline void Client::set_logger(Logger logger) { cli_->set_logger(std::move(logger)); }
inline void Client::set_logger(Logger logger) { cli_->set_logger(logger); }
#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
inline void Client::set_ca_cert_path(const std::string &ca_cert_file_path,