


#include "ConfigParser.hpp"



void	ConfigParser::_post_processing(std::vector<ServerConfig> *servers)
{

	// make certain servers default
	// fill out empty settings
	// if special settings are empty throw

	std::vector<ServerConfig>::iterator	it = servers->begin();

	while (it != servers->end())
	{
		// host and port should already be set
		if (it->host == "")
			throw std::invalid_argument("Config file needs a host and port");

	// is that a good default?
		if (it->root == "")
			it->root = "/";
		if (it->client_body_limit == 0)
			it->client_body_limit = 5000;	// what is the recomended size?

		// autoindex should already be false by default right?

		// what do we do if Allow methods is left empty?
			// all ?
		if (it->allow_methods.empty())
			throw std::invalid_argument("No methods specified");
			

		// what to do if index is left empty? index.html?
		// ok but i still need to check index, no idea how...

		// if error_pages is left empty, we'll use the defaults which
			// i believe are set elsewhere...

		std::vector<LocationConfig>::iterator	it_l = it->locations.begin();
		while (it_l != it->locations.end())
		{
			// check that path is feasible...
			// opendir?
			DIR*	dir = opendir(it_l->path.c_str());
			if (dir)
				closedir(dir);
			else
				throw std::invalid_argument("location dir could not be opened");

			if (it_l->client_body_limit == 0)
				it_l->client_body_limit = 5000;	// what is the recomended size?
			if (it_l->root == "")
				it_l->root = it->root;

			// fill out allow methods from server?
			if (it_l->allow_methods.empty())
				it_l->allow_methods = it->allow_methods;

			// fill out index from Server?
			// or do a bunch of checks on what is in there...

			// same for redirect status i think

			// maybe do something for Cgi_info?

			++it_l;
		}


		++it;
	}

	// do the defaults at the end?


}





