Webserv
Loading...
Searching...
No Matches
Router.hpp
Go to the documentation of this file.
1#pragma once
2
4#include "http/Request.hpp"
5#include "http/Response.hpp"
6
7namespace http {
8
9class MimeTypes;
10
20class Router {
21public:
27 Router(config::ServerConfig const &cfg, MimeTypes const &mime);
28
38 void matchServerAndLocation(int port, Request &request) const;
39
50 void dispatch(int port, const Request &request, Response &response) const;
51
53 void handleError(Request const &, Response &) const;
54
55private:
65 static void handleError(Request const &request, Response &response, MimeTypes const &mimeTypes);
66
75 void executeHandler(Request const &request, Response &response) const;
76 static bool isMethodAllowed(const Request &request);
77
81};
82
83} // namespace http
A strongly-typed data container for a server block's configuration.
Definition ServerConfig.hpp:22
Definition MimeTypes.hpp:11
Definition Request.hpp:66
A data container for an HTTP response, managed via a fluent API.
Definition Response.hpp:33
void matchServerAndLocation(int port, Request &request) const
Populates the request with the matching server and location blocks.
Definition Router.cpp:21
void executeHandler(Request const &request, Response &response) const
Internal: Selects and executes the correct handler.
Definition Router.cpp:85
Router(config::ServerConfig const &cfg, MimeTypes const &mime)
Constructs the Router.
Definition Router.cpp:16
config::ServerConfig const & config_
Definition Router.hpp:79
void handleError(Request const &, Response &) const
Definition Router.cpp:81
static bool isMethodAllowed(const Request &request)
Definition Router.cpp:125
MimeTypes const & mimeTypes_
Definition Router.hpp:80
void dispatch(int port, const Request &request, Response &response) const
Dispatches a fully parsed request to the correct handler.
Definition Router.cpp:38
Definition IArgument.hpp:5