#include #include #include #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* servers = configParser.parse(); // use an iterator you moron for (std::vector::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::cerr << e.what() << '\n'; } return (0); }