HandlerResponse WebEngine::evaluate(HandlerRequest & req)
{
	Handler * h = &HandlerRegistrar::getRoot();
	for(auto part : req.URIParts)
	{
		h = &h->resolve(part, &req);
	}
	HandlerResponse res;
	switch(req.method)
	{
		case HM_GET:
		{
			res = h->get(req);
			break;
		}
		case HM_POST:
		{
			res = h->post(req);
			break;
		}
		case HM_PUT:
		{
			res = h->put(req);
			break;
		}
		case HM_DELETE:
		{
			res = h->del(req);
			break;
		}
		case HM_OPTIONS:
		{
			res = h->get(req);
			break;
		}
		case HM_AUTH:
		{
			res = MakeAuthorizationResponse(
				h->authorize(req.body, req.version)
				);
			break;
		}
		default:
		{
			res.meta.code = RSC_ERR_BAD_METHOD;
			break;
		}
	}
	return res;
}