diff --git a/httplib.h b/httplib.h index 4f8397f..38f3501 100644 --- a/httplib.h +++ b/httplib.h @@ -411,6 +411,7 @@ public: Server &Options(const char *pattern, Handler handler); bool set_base_dir(const char *path); + void set_file_request_handler(Handler handler); void set_error_handler(Handler handler); void set_logger(Logger logger); @@ -460,6 +461,7 @@ private: std::atomic is_running_; std::atomic svr_sock_; std::string base_dir_; + Handler file_request_handler_; Handlers get_handlers_; Handlers post_handlers_; Handlers put_handlers_; @@ -2086,6 +2088,10 @@ inline bool Server::set_base_dir(const char *path) { return false; } +inline void Server::set_file_request_handler(Handler handler) { + file_request_handler_ = handler; +} + inline void Server::set_error_handler(Handler handler) { error_handler_ = handler; } @@ -2309,6 +2315,9 @@ inline bool Server::handle_file_request(Request &req, Response &res) { auto type = detail::find_content_type(path); if (type) { res.set_header("Content-Type", type); } res.status = 200; + if (file_request_handler_) { + file_request_handler_(req, res); + } return true; } }