Example #1
0
        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());
        }
Example #2
0
        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());
        }