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 exceptionHandlingObserver = new ExceptionHandlingObserver(); arguments.Set(typeof(IExceptionHandlingObserver), exceptionHandlingObserver); return(Task.Factory.StartNew(() => invoker.Invoke(arguments, routeData.Values)) .ContinueWith(x => { try { x.FinishProcessingTask(exceptionHandlingObserver); } catch (Exception ex) { write500(environment, ex); } })); }
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 exceptionHandlingObserver = new ExceptionHandlingObserver(); arguments.Set(typeof(IExceptionHandlingObserver), exceptionHandlingObserver); return Task.Factory.StartNew(() => invoker.Invoke(arguments, routeData.Values)) .ContinueWith(x => { try { x.FinishProcessingTask(exceptionHandlingObserver); } catch (Exception ex) { write500(environment, ex); } }); }
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 OwinServiceArguments(RouteData routeData, IDictionary<string, object> environment) { var httpRequest = new OwinCurrentHttpRequest(environment); var httpContextBase = new OwinHttpContext(environment); With<HttpContextBase>(httpContextBase); With<IRequestData>(new OwinRequestData(routeData, environment, httpRequest)); With<ICurrentHttpRequest>(httpRequest); With<IStreamingData>(new OwinStreamingData(environment)); With<IHttpWriter>(new OwinHttpWriter(environment)); With<IResponse>(new OwinResponse(environment)); }
public OwinServiceArguments(RouteData routeData, IDictionary <string, object> environment) { var httpRequest = new OwinCurrentHttpRequest(environment); var httpContextBase = new OwinHttpContext(environment); With <HttpContextBase>(httpContextBase); With <IRequestData>(new OwinRequestData(routeData, environment, httpRequest)); With <ICurrentHttpRequest>(httpRequest); With <IStreamingData>(new OwinStreamingData(environment)); With <IHttpWriter>(new OwinHttpWriter(environment)); With <IResponse>(new OwinResponse(environment)); }