diff --git a/include/expresso/core/server.h b/include/expresso/core/server.h index 3a6ed75..371f160 100644 --- a/include/expresso/core/server.h +++ b/include/expresso/core/server.h @@ -8,6 +8,7 @@ #include #include +#include #include namespace expresso { @@ -20,6 +21,7 @@ class Server : public Router { size_t maxConnections; struct sockaddr_in address; + void setupMiddlewares(); void acceptConnections(); void handleConnection(int clientSocket); diff --git a/include/expresso/middleware/date.h b/include/expresso/middleware/date.h new file mode 100644 index 0000000..17c77bc --- /dev/null +++ b/include/expresso/middleware/date.h @@ -0,0 +1,21 @@ +#include + +#include + +namespace expresso { + +namespace middleware { + +class Date : public Middleware { + +public: + Date(); + ~Date(); + + bool use(expresso::core::Request &req, + expresso::core::Response &res) override; +}; + +} // namespace middleware + +} // namespace expresso \ No newline at end of file diff --git a/lib/brewtils b/lib/brewtils index 4652e95..076fd90 160000 --- a/lib/brewtils +++ b/lib/brewtils @@ -1 +1 @@ -Subproject commit 4652e957b2a8506df3529836494d444e255d28df +Subproject commit 076fd9068889dba633ccb26498d1baf74b4ccf4e diff --git a/src/core/server.cpp b/src/core/server.cpp index 684d7d1..81fdfb1 100644 --- a/src/core/server.cpp +++ b/src/core/server.cpp @@ -18,6 +18,7 @@ expresso::core::Server::Server(size_t maxConnections, size_t maxThreads) this->address.sin_family = AF_INET; this->address.sin_addr.s_addr = INADDR_ANY; + this->setupMiddlewares(); return; } @@ -54,6 +55,10 @@ void expresso::core::Server::listen(int port, std::function callback) { return; } +void expresso::core::Server::setupMiddlewares() { + this->use(std::make_unique()); +} + void expresso::core::Server::acceptConnections() { while (true) { struct sockaddr_in clientAddress; diff --git a/src/middleware/date.cpp b/src/middleware/date.cpp new file mode 100644 index 0000000..5aa36bf --- /dev/null +++ b/src/middleware/date.cpp @@ -0,0 +1,11 @@ +#include + +expresso::middleware::Date::Date() { return; } + +expresso::middleware::Date::~Date() { return; } + +bool expresso::middleware::Date::use(expresso::core::Request &req, + expresso::core::Response &res) { + res.set("date", brewtils::date::getCurrentUTC()); + return true; +} \ No newline at end of file