public IHttpResponse Handle(IHttpRequest httpRequest) { var requestMethod = httpRequest.RequestMethod; var requestPath = httpRequest.Path; var registeredRoutes = this.serverRouteConfig.Routes[requestMethod]; foreach (var registeredRoute in registeredRoutes) { string routePattern = registeredRoute.Key; IRoutingContext routingContext = registeredRoute.Value; Regex routeRegex = new Regex(routePattern); Match match = routeRegex.Match(requestPath); if (!match.Success) { continue; } var parameters = routingContext.Parameters; foreach (string parameter in parameters) { string parameterValue = match.Groups[parameter].Value; httpRequest.AddUrlParameter(parameter, parameterValue); } return(routingContext.RequestHandler.Handle(httpRequest)); } return(new NotFoundResponse()); }
public IHttpResponse Handle(IHttpRequest httpRequest) { string requestPath = httpRequest.Path; bool isSignInRequest = requestPath == Paths.logIn; bool loggedIn = AuthenticationCheck(httpRequest); if (!isSignInRequest && !loggedIn) { return(new RedirectResponse(Paths.logIn)); } var requestMethod = httpRequest.RequestMethod; var registeredRoutes = this.serverRouteConfig.Routes[requestMethod]; foreach (var registeredRoute in registeredRoutes) { string routePattern = registeredRoute.Key; IRoutingContext routingContext = registeredRoute.Value; Regex routeRegex = new Regex(routePattern); Match match = routeRegex.Match(requestPath); if (!match.Success) { continue; } var parameters = routingContext.Parameters; foreach (string parameter in parameters) { string parameterValue = match.Groups[parameter].Value; httpRequest.AddUrlParameter(parameter, parameterValue); } IHttpResponse response = routingContext.RequestHandler.Handle(httpRequest); return(response); } return(new NotFoundResponse()); }