SingleRoute IRouteRepository.AddRoute(SingleRoute route) { SingleRoute prev; string path = route.Path.ToLowerInvariant(); if (_routes.TryGetValue(path, out prev)) return prev; route.Split = new ASplit(path); _routes.Add(path, route); return route; }
private void validate_request(HttpContext http, SingleRoute route) { // validate get/post request }
private void invoke_handler(HttpContext http, SingleRoute route, Action notifyCompletion) { try { route.Controller.ProcessRequest(route.Handler, http); } catch (Exception ex) { http.set_error_response(ex.Message); throw; } finally { notifyCompletion(); } }
private void invoke_async_handler(HttpContext http, SingleRoute route, Action notifyCompletion) { try { route.AsyncHandler(http, notifyCompletion); } catch (Exception ex) { http.set_error_response(ex.Message); notifyCompletion(); throw; } }
private SingleRoute add_route(SingleRoute route) { return _routes.AddRoute(route); }
void IWebApiController.ProcessRequest(HttpContext http, SingleRoute route, Action notifyCompletion) { validate_initialization(); if (route.HandlerIsSynchronous) invoke_handler(http, route, notifyCompletion); else if (route.HandlerIsAsynchronous) invoke_async_handler(http, route, notifyCompletion); else throw new WebApiException("No handler for route '{0}' is provided", route.Path); }
private void add_to_cache(string path, SingleRoute route) { Validate.NotNull(route); var cache = new Dictionary<string, SingleRoute>(_cache, StringComparer.InvariantCultureIgnoreCase); cache.Add(path, route); _cache = cache; }