internal static Func <Ccf.Ck.Models.DirectCall.InputModel, Task <Ccf.Ck.Models.DirectCall.ReturnModel> > ExecutionDelegateDirect(IApplicationBuilder builder, KraftGlobalConfigurationSettings kraftGlobalConfigurationSettings) { Func <Ccf.Ck.Models.DirectCall.InputModel, Task <Ccf.Ck.Models.DirectCall.ReturnModel> > directDelegate = (inputModel) => { var transactionScope = new TransactionScopeContext(builder.ApplicationServices.GetService <IServiceCollection>()); var nodesSetService = builder.ApplicationServices.GetService <INodeSetService>(); var kraftModuleCollection = builder.ApplicationServices.GetService <KraftModuleCollection>(); Models.DirectCall.ReturnModel returnModel = null; DirectCallHandler dcHandler = new DirectCallHandler(inputModel, kraftModuleCollection, nodesSetService); IProcessingContextCollection processingContextCollection = dcHandler.GenerateProcessingContexts(kraftGlobalConfigurationSettings, null); foreach (IProcessingContext processingContext in processingContextCollection.ProcessingContexts) { dcHandler.Execute(processingContext, transactionScope); returnModel = new Models.DirectCall.ReturnModel { Data = processingContext.ReturnModel.Data, BinaryData = processingContext.ReturnModel.BinaryData, IsSuccessful = processingContext.ReturnModel.Status.IsSuccessful }; return(Task.FromResult(returnModel)); } return(Task.FromResult(returnModel)); }; return(directDelegate); }
public async Task ExecuteAsync() { AbstractProcessorFactory processorFactory = new KraftProcessorFactory(); IProcessorHandler processor = processorFactory.CreateProcessor(_HttpContext, _KraftModuleCollection, _NodesSetService); IProcessingContextCollection processingContexts = processor.GenerateProcessingContexts(_ServiceProvider.GetService <KraftGlobalConfigurationSettings>(), _KraftGlobalConfigurationSettings.GeneralSettings.KraftRequestFlagsKey); if (processingContexts == null) { Utilities.ExtensionMethods.KraftResult(_HttpContext, HttpStatusCode.InternalServerError, $"ExecuteAsync.CreateProcessingContexts returned null."); return; } Task[] tasks = new Task[processingContexts.Length]; int i = 0; try { _IsSystemInMaintenanceMode = processingContexts.IsMaintenance; foreach (IProcessingContext processingContext in processingContexts.ProcessingContexts) { tasks[i++] = Task.Run(() => { ExecuteReEntrance(processingContext, processingContexts.IsMaintenance); }); } await Task.WhenAll(tasks); } finally { _IsSystemInMaintenanceMode = false; processor.GenerateResponse(); } }
internal void ExecuteSignals(string module, string signal) { INodeSetService nodeSetService = _ServiceProvider.GetService <INodeSetService>(); KraftModuleCollection kraftModuleCollection = _ServiceProvider.GetService <KraftModuleCollection>(); DefaultHttpContext httpContext = new DefaultHttpContext(); httpContext.Request.Method = "GET"; RouteData routeData = new RouteData(); routeData.Values.Add(Constants.RouteSegmentConstants.RouteModule, module); routeData.Values.Add(Constants.RouteSegmentConstants.RouteModuleSignalParameter, signal); routeData.DataTokens.Add("key", Constants.RouteSegmentConstants.RouteDataTokenSignalRead); httpContext.Features[typeof(IRoutingFeature)] = new RoutingFeature() { RouteData = routeData, }; ProcessorSignal processorSignal = new ProcessorSignal(httpContext, kraftModuleCollection, ESupportedContentTypes.JSON, nodeSetService); IProcessingContextCollection processingContextCollection = processorSignal.GenerateProcessingContexts(_KraftGlobalConfigurationSettings, string.Empty, new SecurityModelMock(_KraftGlobalConfigurationSettings.GeneralSettings.AuthorizationSection)); RequestExecutor requestExecutor = new RequestExecutor(_ServiceProvider, httpContext, _KraftGlobalConfigurationSettings); foreach (IProcessingContext processingContext in processingContextCollection.ProcessingContexts) { requestExecutor.ExecuteReEntrance(processingContext); } }
public async Task ExecuteAsync() { //REQUESTRECORDER if (_KraftGlobalConfigurationSettings.GeneralSettings.ToolsSettings.RequestRecorder.IsEnabled) { ISecurityModel securityModel; if (_KraftGlobalConfigurationSettings.GeneralSettings.AuthorizationSection.RequireAuthorization) { securityModel = new SecurityModel(_HttpContext); } else { securityModel = new SecurityModelMock(_KraftGlobalConfigurationSettings.GeneralSettings.AuthorizationSection); } if (securityModel.IsAuthenticated) { RecordersStoreImp recordersStoreImp = _HttpContext.RequestServices.GetRequiredService <RecordersStoreImp>(); IRequestRecorder requestRecorder = recordersStoreImp.Get(securityModel.UserName); if (requestRecorder != null && requestRecorder.IsRunning) { await requestRecorder.HandleRequest(_HttpContext.Request); } } } AbstractProcessorFactory processorFactory = new KraftProcessorFactory(); IProcessorHandler processor = processorFactory.CreateProcessor(_HttpContext, _KraftModuleCollection, _NodesSetService, _ServiceProvider.GetService <KraftGlobalConfigurationSettings>()); IProcessingContextCollection processingContexts = processor.GenerateProcessingContexts(_KraftGlobalConfigurationSettings.GeneralSettings.KraftRequestFlagsKey); if (processingContexts == null) { Utilities.ExtensionMethods.KraftResult(_HttpContext, HttpStatusCode.InternalServerError, $"ExecuteAsync.CreateProcessingContexts returned null."); return; } Task[] tasks = new Task[processingContexts.Length]; int i = 0; try { _IsSystemInMaintenanceMode = processingContexts.IsMaintenance; foreach (IProcessingContext processingContext in processingContexts.ProcessingContexts) { tasks[i++] = Task.Run(() => { ExecuteReEntrance(processingContext, processingContexts.IsMaintenance); }); } await Task.WhenAll(tasks); } finally { _IsSystemInMaintenanceMode = false; processor.GenerateResponse(); } }
public ProcessorBase(HttpContext httpContext, KraftModuleCollection kraftModuleCollection, ESupportedContentTypes requestContentType) { _KraftModuleCollection = kraftModuleCollection; _HttpContext = httpContext; _RequestMethod = (ERequestMethod)Enum.Parse(typeof(ERequestMethod), httpContext.Request.Method); _RequestContentType = requestContentType; _ProcessingContextCollection = new ProcessingContextCollection(new List <IProcessingContext>()); //AntiforgeryService //KeyValuePair<string, string> cookie = httpContext.Request.Cookies.FirstOrDefault(c => c.Key.Contains("XSRF-TOKEN")); //if (cookie.Value != null) //{ // httpContext.Request.Headers.Add("RequestVerificationToken", new StringValues(cookie.Value)); //} }
public XmlPacketResponseBuilder(IProcessingContextCollection processingContextCollection) { _ProcessingContextCollection = processingContextCollection; }