Webserv
Loading...
Searching...
No Matches
ServerBlock.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "LocationBlock.hpp"
4#include "internal/Block.hpp"
5
6namespace config {
7
8typedef std::map<std::string, LocationBlock> LocationBlockMap;
9
18class ServerBlock : public Block {
19public:
20 // ========================= Construction & Destruction =========================
21
23
24 // ============================== Public Interface ==============================
25
26 bool hasLocation(LocationBlock const &);
27 void addLocation(LocationBlock const &);
28
35 void setListen(std::string const &listenArg);
36
43 LocationBlock const *getLocation(std::string const &name) const;
44 LocationBlockMap const &locations() const { return locations_; }
46
47 // ============================== Getters & Setters =============================
48
49 int getPort() const { return port_; }
50 std::string const &getAddress() const { return address_; }
51
52private:
53 int port_;
54 std::string address_;
56};
57
58typedef std::vector<ServerBlock> ServerBlockVec;
59
60std::ostream &operator<<(std::ostream &o, ServerBlock const &t);
61
62namespace details {
63
64bool matchServerName(std::vector<std::string> const &, std::string const &);
65LocationBlock const *bestMatchLocation(LocationBlockMap const &ls, std::string const &path);
66
67} // namespace details
68
69} // namespace config
Base class for configuration blocks like 'server' and 'location'.
Definition Block.hpp:19
Represents a single 'location' block from the configuration file.
Definition LocationBlock.hpp:16
Represents a single 'server' block from the configuration file.
Definition ServerBlock.hpp:18
std::string address_
Definition ServerBlock.hpp:54
LocationBlockMap & locations()
Definition ServerBlock.hpp:45
LocationBlockMap const & locations() const
Definition ServerBlock.hpp:44
std::string const & getAddress() const
Definition ServerBlock.hpp:50
void setListen(std::string const &listenArg)
Parses a listen directive string and sets the address and port.
Definition ServerBlock.cpp:27
LocationBlockMap locations_
Definition ServerBlock.hpp:55
void addLocation(LocationBlock const &)
Definition ServerBlock.cpp:25
int port_
Definition ServerBlock.hpp:53
bool hasLocation(LocationBlock const &)
Definition ServerBlock.cpp:21
int getPort() const
Definition ServerBlock.hpp:49
ServerBlock()
Definition ServerBlock.cpp:15
LocationBlock const * getLocation(std::string const &name) const
Retrieves the configuration for a specific location path.
Definition ServerBlock.cpp:17
Definition ServerBlock.hpp:62
LocationBlock const * bestMatchLocation(LocationBlockMap const &ls, std::string const &path)
Definition bestMatchLocation.cpp:6
bool matchServerName(std::vector< std::string > const &, std::string const &)
Definition ServerBlock.cpp:62
Definition ConfigException.hpp:6
std::ostream & operator<<(std::ostream &o, Token const &t)
Definition Token.cpp:29
std::vector< ServerBlock > ServerBlockVec
Definition ServerBlock.hpp:58
std::map< std::string, LocationBlock > LocationBlockMap
Definition ServerBlock.hpp:8