52 lines
1.1 KiB
C++
52 lines
1.1 KiB
C++
|
|
#include <iostream>
|
|
#include <exception>
|
|
#include <stdexcept>
|
|
#include "Webserv.hpp"
|
|
#include "ConfigParser.hpp"
|
|
|
|
int main(int ac, char **av)
|
|
{
|
|
try
|
|
{
|
|
std::string config = (ac == 2 ? av[1] : "./default.config");
|
|
|
|
// like this just looks kinda gross, why bother creating an instance
|
|
// and not immediately parsing? like it servers no other purpose...
|
|
// what if i call parse directly in the constructor?
|
|
// oh because the constructor has no return, but still
|
|
// is there a better way?
|
|
|
|
ConfigParser configParser(config.c_str());
|
|
|
|
configParser._print_content();
|
|
|
|
// i don't love that servers has to be a pointer...
|
|
std::vector<ServerConfig>* servers = configParser.parse();
|
|
|
|
// use an iterator you moron
|
|
for (std::vector<ServerConfig>::iterator it = servers->begin(); it < servers->end(); it++)
|
|
{
|
|
// std::cout << it->server_name << " ";
|
|
it->print_all();
|
|
}
|
|
|
|
|
|
// Webserv serv(configParser.parse());
|
|
// is this better or worse than using
|
|
|
|
Webserv serv;
|
|
|
|
// serv.init_virtual_servers();
|
|
serv.init_virtual_servers(servers);
|
|
delete servers;
|
|
serv.run();
|
|
}
|
|
catch (std::exception& e)
|
|
{
|
|
std::cout << e.what() << '\n';
|
|
}
|
|
|
|
return (0);
|
|
}
|