Exemplo n.º 1
0
void WebRequest::process (void)
{
	int index;
	static int count = 0;
	char buffer[100];
	WebPage *page;


	log (LOG_WEBSOCKET, "Process: %s, %s, %s", method, path, protocol);

	for (index = 0; index < number_of_arguments; index ++)
	{
		log (LOG_WEBSOCKET, "   Arg : %-15s = %s", argument_key[index], argument_value[index]);
	}

	for (index = 0; index < number_of_headers; index ++)
	{
		log (LOG_WEBSOCKET, "   Head: %-15s = %s", header_key[index], header_value[index]);
	}

	page = WebPage::find (path);

	if (page)
	{
		log (LOG_WEBSOCKET, "    Page = %p", page);

		if (page->process (this))
		{
			end_response ();
		}
	}
	else
	{
		page = WebPage::open (path);

		if ((page) && (page->process (this)))
		{
			end_response ();
		}
		else
		{
			add_response_part ("request_path", path);
			add_response_part ("page_left", "");
			add_response_part ("page_right", "Page Not Found : ${request_path}");
			add_template_response ("${page_layout}", strlen ("${page_layout}"));
			set_response_code (404);
			end_response ();
		}
	}

	socket->close_when_written ();
}