public Task Invoke(IDictionary<string, object> environment) { var owinHttpContext = new OwinHttpContext(environment); var routeData = _routes.GetRouteData(owinHttpContext); if (routeData == null) { write404(environment); return Task.Factory.StartNew(() => { }); } new OwinRequestReader().Read(environment); var arguments = new OwinServiceArguments(routeData, environment); var invoker = routeData.RouteHandler.As<FubuRouteHandler>().Invoker; var taskCompletionSource = new TaskCompletionSource<object>(); var requestCompletion = new RequestCompletion(); requestCompletion.WhenCompleteDo(ex => { if (ex != null) { //This seems like OWIN should handle the .SetException(ex) with standard error screen formatting? write500(environment, ex); } taskCompletionSource.SetResult(null); }); arguments.With<IRequestCompletion>(requestCompletion); requestCompletion.SafeStart(() => invoker.Invoke(arguments, routeData.Values, requestCompletion)); return taskCompletionSource.Task; }
public Task Invoke(IDictionary <string, object> environment) { var owinHttpContext = new OwinHttpContext(environment); var routeData = _routes.GetRouteData(owinHttpContext); if (routeData == null) { write404(environment); return(Task.Factory.StartNew(() => { })); } new OwinRequestReader().Read(environment); var arguments = new OwinServiceArguments(routeData, environment); var invoker = routeData.RouteHandler.As <FubuRouteHandler>().Invoker; var taskCompletionSource = new TaskCompletionSource <object>(); var requestCompletion = new RequestCompletion(); requestCompletion.WhenCompleteDo(ex => { if (ex != null) { //This seems like OWIN should handle the .SetException(ex) with standard error screen formatting? write500(environment, ex); } taskCompletionSource.SetResult(null); }); arguments.With <IRequestCompletion>(requestCompletion); requestCompletion.SafeStart(() => invoker.Invoke(arguments, routeData.Values, requestCompletion)); return(taskCompletionSource.Task); }
public async Task Invoke(IDictionary<string, object> environment) { var owinHttpContext = new OwinHttpContext(environment); var routeData = _routes.GetRouteData(owinHttpContext); if (routeData == null) { write404(environment); return; } new OwinRequestReader().Read(environment); var arguments = new OwinServiceArguments(routeData, environment); var invoker = routeData.RouteHandler.As<FubuRouteHandler>().Invoker; try { await invoker.Invoke(arguments, routeData.Values).ConfigureAwait(false); } catch (Exception e) { write500(environment, e); } }
public async Task Invoke(IDictionary <string, object> environment) { var owinHttpContext = new OwinHttpContext(environment); var routeData = _routes.GetRouteData(owinHttpContext); if (routeData == null) { write404(environment); return; } new OwinRequestReader().Read(environment); var arguments = new OwinServiceArguments(routeData, environment); var invoker = routeData.RouteHandler.As <FubuRouteHandler>().Invoker; try { await invoker.Invoke(arguments, routeData.Values).ConfigureAwait(false); } catch (Exception e) { write500(environment, e); } }
public void registers_the_environment_dictionary_itself() { var environment = new Dictionary<string, object>(); var routeData = new RouteData(); var arguments = new OwinServiceArguments(routeData, environment); arguments.Get<IDictionary<string, object>>() .ShouldBeSameAs(environment); }
public void register_the_execution_log_if_it_exists() { var log = new ChainExecutionLog(); var environment = new Dictionary<string, object>(); environment.Log(log); var routeData = new RouteData(); var arguments = new OwinServiceArguments(routeData, environment); arguments.Get<IChainExecutionLog>() .ShouldBeSameAs(log); }