private HttpResponse RouteRequest()
        {
            var routes = this.Routes
                         .Where(x => Regex.Match(Request.Url, x.UrlRegex).Success)
                         .ToList();

            if (!routes.Any())
            {
                return(HttpResponseBuilder.NotFound());
            }

            var route = routes.SingleOrDefault(x => x.Method == Request.Method);

            if (route == null)
            {
                return new HttpResponse()
                       {
                           StatusCode = ResponseStatusCode.MethodNotAllowed
                       }
            }
            ;

            // trigger the route handler...
            try
            {
                return(route.Callable(Request));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
                return(HttpResponseBuilder.InternalServerError());
            }
        }
    }
示例#2
0
        private HttpResponse RouteRequest()
        {
            var routes = this.routes
                         .Where(x => Regex.Match(this.request.Url, x.UrlRegex).Success)
                         .ToList();

            var test = this.routes.FirstOrDefault().UrlRegex;

            if (!routes.Any())
            {
                return(HttpResponseBuilder.NotFound());
            }

            var route = routes.FirstOrDefault(x => x.Method == this.request.Method);

            if (route == null)
            {
                return(new HttpResponse()
                {
                    StatusCode = ResponseStatusCode.MethodNotAllowed
                });
            }

            try
            {
                return(route.Callable(this.request));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
                return(HttpResponseBuilder.InternalServerError());
            }
        }
示例#3
0
        private HttpResponse RouteRequest()
        {
            var routes = this.Routes
                         .Where(x => Regex.Match(Request.Url, x.UrlRegex).Success)
                         .ToList();

            if (!routes.Any())
            {
                return(HttpResponseBuilder.NotFound());
            }

            var route = routes.FirstOrDefault(x => x.Method == Request.Method);

            if (route == null)
            {
                return new HttpResponse()
                       {
                           StatusCode = ResponseStatusCode.MethodNotAllowed
                       }
            }
            ;

            // trigger the route handler...
            try
            {
                HttpResponse response;

                if (!Request.Header.Cookies.Contains("sessionId") || this.Request.Session == null)
                {
                    var session       = SessionCreator.Create();
                    var sessionCookie = new Cookie("sessionId", session.Id + "; HttpOnly; path=/");
                    this.Request.Session = session;
                    response             = route.Callable(this.Request);
                    response.Header.AddCookie(sessionCookie);
                }
                else
                {
                    response = route.Callable(this.Request);
                }

                return(response);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
                return(HttpResponseBuilder.InternalServerError());
            }
        }
    }
        private HttpResponse RouteRequest()
        {
            {
                var routes = this.Routes
                             .Where(x => Regex.Match(Request.Url, x.UrlRegex).Success)
                             .ToList();

                if (!routes.Any())
                {
                    return(HttpResponseBuilder.NotFound());
                }

                var route = routes.SingleOrDefault(x => x.Method == Request.Method);

                if (route == null)
                {
                    return new HttpResponse()
                           {
                               StatusCode = ResponseStatusCode.MethodNotAllowed
                           }
                }
                ;

                #region FIleSystemHandler
                // extract the path if there is one
                //var match = Regex.Match(request.Url, route.UrlRegex);
                //if (match.Groups.Count > 1)
                //{
                //    request.Path = match.Groups[1].Value;
                //}
                //else
                //{
                //    request.Path = request.Url;
                //}
                #endregion


                // trigger the route handler...
                try
                {
                    return(route.Callable(Request));
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.WriteLine(ex.StackTrace);
                    return(HttpResponseBuilder.InternalServerError());
                }
            }
        }