Exemple #1
0
        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}");
                    }
                }
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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;
        }