Skip to content

Commit 04d68f5

Browse files
committed
Added middleware support
1 parent 2c07ec4 commit 04d68f5

File tree

1 file changed

+23
-6
lines changed

1 file changed

+23
-6
lines changed

httplib.h

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -628,6 +628,9 @@ class Server {
628628
void set_file_request_handler(Handler handler);
629629

630630
void set_error_handler(Handler handler);
631+
void set_pre_routing_handler(Handler handler);
632+
void set_post_routing_handler(Handler handler);
633+
631634
void set_expect_100_continue_handler(Expect100ContinueHandler handler);
632635
void set_logger(Logger logger);
633636

@@ -735,6 +738,8 @@ class Server {
735738
HandlersForContentReader delete_handlers_for_content_reader_;
736739
Handlers options_handlers_;
737740
Handler error_handler_;
741+
Handler pre_routing_handler_;
742+
Handler post_routing_handler_;
738743
Logger logger_;
739744
Expect100ContinueHandler expect_100_continue_handler_;
740745

@@ -4130,10 +4135,12 @@ inline void Server::set_error_handler(Handler handler) {
41304135
error_handler_ = std::move(handler);
41314136
}
41324137

4133-
inline void Server::set_tcp_nodelay(bool on) { tcp_nodelay_ = on; }
4138+
inline void Server::set_pre_routing_handler(Handler handler) {
4139+
pre_routing_handler_ = std::move(handler);
4140+
}
41344141

4135-
inline void Server::set_socket_options(SocketOptions socket_options) {
4136-
socket_options_ = std::move(socket_options);
4142+
inline void Server::set_post_routing_handler(Handler handler) {
4143+
post_routing_handler_ = std::move(handler);
41374144
}
41384145

41394146
inline void Server::set_logger(Logger logger) { logger_ = std::move(logger); }
@@ -4143,6 +4150,12 @@ Server::set_expect_100_continue_handler(Expect100ContinueHandler handler) {
41434150
expect_100_continue_handler_ = std::move(handler);
41444151
}
41454152

4153+
inline void Server::set_tcp_nodelay(bool on) { tcp_nodelay_ = on; }
4154+
4155+
inline void Server::set_socket_options(SocketOptions socket_options) {
4156+
socket_options_ = std::move(socket_options);
4157+
}
4158+
41464159
inline void Server::set_keep_alive_max_count(size_t count) {
41474160
keep_alive_max_count_ = count;
41484161
}
@@ -4240,7 +4253,7 @@ inline bool Server::write_response_core(Stream &strm, bool close_connection,
42404253
std::string boundary;
42414254
if (need_apply_ranges) { apply_ranges(req, res, content_type, boundary); }
42424255

4243-
// Preapre additional headers
4256+
// Prepare additional headers
42444257
if (close_connection || req.get_header_value("Connection") == "close") {
42454258
res.set_header("Connection", "close");
42464259
} else {
@@ -4264,7 +4277,8 @@ inline bool Server::write_response_core(Stream &strm, bool close_connection,
42644277
res.set_header("Accept-Ranges", "bytes");
42654278
}
42664279

4267-
detail::BufferStream bstrm;
4280+
// TODO: Post-routing handler support?
4281+
if (post_routing_handler_) { post_routing_handler_(req, res); }
42684282

42694283
// Response line and headers
42704284
{
@@ -4570,6 +4584,9 @@ inline bool Server::listen_internal() {
45704584
}
45714585

45724586
inline bool Server::routing(Request &req, Response &res, Stream &strm) {
4587+
// TODO: Pre-routing handler support?
4588+
if (pre_routing_handler_) { pre_routing_handler_(req, res); }
4589+
45734590
// File handler
45744591
bool is_head_request = req.method == "HEAD";
45754592
if ((req.method == "GET" || is_head_request) &&
@@ -5268,7 +5285,7 @@ inline bool ClientImpl::write_content_with_provider(Stream &strm,
52685285

52695286
inline bool ClientImpl::write_request(Stream &strm, const Request &req,
52705287
bool close_connection, Error &error) {
5271-
// Prepare additonal headers
5288+
// Prepare additional headers
52725289
Headers headers;
52735290
if (close_connection) { headers.emplace("Connection", "close"); }
52745291

0 commit comments

Comments
 (0)