protected virtual HttpResponse RouteRequest(Stream inputStream, Stream outputStream, HttpRequest request) { List <Route> routes = this.Routes.Where(x => Regex.Match(request.Url, x.UrlRegex).Success).ToList(); if (!routes.Any()) { return(HttpBuilder.NotFound()); } Route route = routes.SingleOrDefault(x => x.Method == request.Method); if (route == null) { return(HttpBuilder.MethodNotAllowed()); } request.Route = route; try { var result = route.Callable(request); if (result.IsValid()) { return(result); } return(HttpBuilder.InternalServerError(new Exception("Response is not valid"))); } catch (Exception ex) { log.Error(ex); return(HttpBuilder.InternalServerError(ex)); } }
protected virtual HttpResponse RouteRequest(TcpClient client, HttpRequest request) { if (!Routes.Any()) { return(HttpBuilder.NotFound()); } //Search Route var route = GetRoute(request); if (route == null) { return(HttpBuilder.NotFound()); } // trigger the route handler... try { var discussion = new HttpDiscussion() { Request = request, Response = null }; route.Callable(discussion); return(discussion.Response); } catch (Exception ex) { Console.WriteLine(ex); return(HttpBuilder.InternalServerError()); } }
protected virtual HttpResponse RouteRequest(Stream inputStream, Stream outputStream, HttpRequest request, IApp app) { string url = request.Url.Split('?')[0]; List <Route> routes = this.Routes.Where(x => url.Equals(x.UrlRegex, StringComparison.OrdinalIgnoreCase) || Regex.Match(url, x.UrlRegex, RegexOptions.IgnoreCase).Success ).ToList(); if (!routes.Any()) { return(HttpBuilder.NotFound(app)); } Route route = routes.SingleOrDefault(x => x.Method == request.Method); if (route == null) { return new HttpResponse(app) { ReasonPhrase = "Method Not Allowed", StatusCode = "405", } } ; // 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; } // trigger the route handler... request.Route = route; try { return(route.Callable(request)); } catch (Exception ex) { //log.Error(ex); return(HttpBuilder.InternalServerError(app)); } }
protected virtual HttpResponse RouteRequest(Stream inputStream, Stream outputStream, HttpRequest request) { List <Route> routes = this.Routes.Where(x => Regex.Match(request.Url, x.UrlRegex).Success).ToList(); if (!routes.Any()) { return(HttpBuilder.NotFound()); } Route route = routes.SingleOrDefault(x => x.Method == request.Method); if (route == null) { return new HttpResponse() { ReasonPhrase = "Method Not Allowed", StatusCode = "405", } } ; // 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; } // trigger the route handler... request.Route = route; try { return(route.Callable(request)); } catch (Exception) { // log.Error(ex); // Console.WriteLine("here1"); // Console.WriteLine(request); return(HttpBuilder.InternalServerError()); } }
protected virtual HttpResponse RouteRequest(Stream inputStream, Stream outputStream, HttpRequest request) { List <Route> routes = this.Routes.Where(x => Regex.Match(request.Url, x.UrlRegex).Success).ToList(); if (!routes.Any()) { return(HttpBuilder.NotFound()); } Route route = routes.SingleOrDefault(x => x.Method == request.Method); if (route == null) { return new HttpResponse() { ReasonPhrase = "Mетод не разрешен (Method Not Allowed)", StatusCode = "405", } } ; // извлечь путь, если есть (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; } // вызвать обработчик маршрута ... (trigger the route handler...) request.Route = route; try { return(route.Callable(request)); } catch (Exception ex) { log.Error(ex); return(HttpBuilder.InternalServerError()); } }
protected virtual HttpResponse RouteRequest(Stream inputStream, Stream outputStream, HttpRequest request) { var routes = _routes.Where(x => Regex.Match(request.Url, x.UrlRegex, RegexOptions.IgnoreCase).Success).ToList(); if (!routes.Any()) { return(NotFoundOverrideCallable == null?HttpBuilder.NotFound() : NotFoundOverrideCallable(request)); } var route = routes.SingleOrDefault(x => x.Method == request.Method); if (route == null) { return new HttpResponse() { ReasonPhrase = "Method Not Allowed", StatusCode = "405", } } ; // extract the path if there is one var match = Regex.Match(request.Url, route.UrlRegex); request.Path = match.Groups.Count > 1 ? match.Groups[1].Value : request.Url; // trigger the route handler... request.Route = route; try { return(route.Callable(request)); } catch (Exception ex) { _log.Error(ex); return(HttpBuilder.InternalServerError()); } }