private async Task ExecuteRules(HttpContext context, IContentAbstraction contentAbstraction, ModificationContext modificationContext, IEnumerable <JavascriptModifier> modifiers) { using (var jsEngine = _serviceProvider.GetService <IJSEngine>()) { jsEngine.Start(); await contentAbstraction.Register(modificationContext, jsEngine); foreach (var modifier in modifiers) { try { bool executeModificationFunction = string.IsNullOrEmpty(modifier.DiscoveryFunction) || jsEngine.Evaluate <bool>(modifier.DiscoveryFunction) ? true : false; if (executeModificationFunction) { jsEngine.Execute(modifier.ModificationFunction); } } catch (Exception ex) { _logger.LogError($"Rule Exception: {ex}"); } } } }
private async Task UpdateResponseStream(HttpContext context, IContentAbstraction contentAbstraction, Stream originalResponseBodyStream) { var finalResponseStream = await contentAbstraction.ReadAsStream(); context.Response.Headers.Remove(HeaderNames.ContentLength); context.Response.ContentLength = finalResponseStream.Length; await finalResponseStream.CopyToAsync(originalResponseBodyStream); }
private async Task UpdateRequestStream(HttpContext context, IContentAbstraction contentAbstraction) { var finalOutputStream = await contentAbstraction.ReadAsStream(); finalOutputStream.Position = 0; context.Request.Body = finalOutputStream; context.Request.Headers.Remove(HeaderNames.ContentLength); context.Request.ContentLength = finalOutputStream.Length; }