public Task<HttpResponseMessage> ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken) { // get the converter to use from the RouteData var converter = controllerContext.RouteData.Values["converter"] as IFacadeMessageConverter; if (converter == null) throw new InvalidOperationException("Requests mapped to FacadeController must supply a converter in RouteData"); var processor = new FacadeRequestProcessor(); return processor.Process(controllerContext.Request, converter); }
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { // find matching converter var converter = this.converters.FirstOrDefault(c => c.Match(request)); if (converter == null) { // continue normal message processing return base.SendAsync(request, cancellationToken); } var processor = new FacadeRequestProcessor(); return processor.Process(request, converter); }