Example #1
0
        public void JavaScriptEncodeStringToString()
        {
            IJavaScriptStringEncoder oldEncoder = JavaScriptStringEncoderOld.Default;
            IJavaScriptStringEncoder newEncoder = JavaScriptStringEncoder.Default;
            Stopwatch timer = new Stopwatch();

            // warm up
            EncodeJavaScript(oldEncoder, SmallString, timer, SmallIterations);
            EncodeJavaScript(newEncoder, SmallString, timer, SmallIterations);

            var oldTime = EncodeJavaScript(oldEncoder, SmallString, timer, SmallIterations);
            var newTime = EncodeJavaScript(newEncoder, SmallString, timer, SmallIterations);
            var message = String.Format("JavaScriptEncodeStringToStringSmall: Old={0}ms, New={1}ms, Delta={2:G}%", (ulong)oldTime.TotalMilliseconds, (ulong)newTime.TotalMilliseconds, (int)((newTime.TotalMilliseconds - oldTime.TotalMilliseconds) / oldTime.TotalMilliseconds * 100));

            output.WriteLine(message);

            oldTime = EncodeJavaScript(oldEncoder, LargeString, timer, LargeIterations);
            newTime = EncodeJavaScript(newEncoder, LargeString, timer, LargeIterations);
            message = String.Format("JavaScriptEncodeStringToStringLarge: Old={0}ms, New={1}ms, Delta={2:G}%", (ulong)oldTime.TotalMilliseconds, (ulong)newTime.TotalMilliseconds, (int)((newTime.TotalMilliseconds - oldTime.TotalMilliseconds) / oldTime.TotalMilliseconds * 100));
            output.WriteLine(message);

            oldTime = EncodeJavaScript(oldEncoder, LargeStringThatIsNotEncoded, timer, LargeIterations);
            newTime = EncodeJavaScript(newEncoder, LargeStringThatIsNotEncoded, timer, LargeIterations);
            message = String.Format("JavaScriptEncodeStringToStringLargeNoEncoding: Old={0}ms, New={1}ms, Delta={2:G}%", (ulong)oldTime.TotalMilliseconds, (ulong)newTime.TotalMilliseconds, (int)((newTime.TotalMilliseconds - oldTime.TotalMilliseconds) / oldTime.TotalMilliseconds * 100));
            output.WriteLine(message);

            oldTime = EncodeJavaScript(oldEncoder, LargeStringWithOnlyEndEncoded, timer, LargeIterations);
            newTime = EncodeJavaScript(newEncoder, LargeStringWithOnlyEndEncoded, timer, LargeIterations);
            message = String.Format("JavaScriptEncodeStringToStringLargeEndEncoding: Old={0}ms, New={1}ms, Delta={2:G}%", (ulong)oldTime.TotalMilliseconds, (ulong)newTime.TotalMilliseconds, (int)((newTime.TotalMilliseconds - oldTime.TotalMilliseconds) / oldTime.TotalMilliseconds * 100));
            output.WriteLine(message);
        }
Example #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="HtmlHelper{TModel}"/> class.
 /// </summary>
 public HtmlHelper(
     IHtmlGenerator htmlGenerator,
     ICompositeViewEngine viewEngine,
     IModelMetadataProvider metadataProvider,
     IHtmlEncoder htmlEncoder,
     IUrlEncoder urlEncoder,
     IJavaScriptStringEncoder javaScriptStringEncoder)
     : base(htmlGenerator, viewEngine, metadataProvider, htmlEncoder, urlEncoder, javaScriptStringEncoder)
 {
     if (htmlGenerator == null)
     {
         throw new ArgumentNullException(nameof(htmlGenerator));
     }
     if (viewEngine == null)
     {
         throw new ArgumentNullException(nameof(viewEngine));
     }
     if (metadataProvider == null)
     {
         throw new ArgumentNullException(nameof(metadataProvider));
     }
     if (htmlEncoder == null)
     {
         throw new ArgumentNullException(nameof(htmlEncoder));
     }
     if (urlEncoder == null)
     {
         throw new ArgumentNullException(nameof(urlEncoder));
     }
     if (javaScriptStringEncoder == null)
     {
         throw new ArgumentNullException(nameof(javaScriptStringEncoder));
     }
 }
Example #3
0
 private TimeSpan EncodeJavaScript(IJavaScriptStringEncoder encoder, string text, Stopwatch timer, int iterations)
 {
     timer.Restart();
     for (int iteration = 0; iteration < iterations; iteration++)
     {
         Ignore(encoder.JavaScriptStringEncode(text));
     }
     return(timer.Elapsed);
 }
Example #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="HtmlHelper{TModel}"/> class.
 /// </summary>
 public HtmlHelper(
     [NotNull] IHtmlGenerator htmlGenerator,
     [NotNull] ICompositeViewEngine viewEngine,
     [NotNull] IModelMetadataProvider metadataProvider,
     [NotNull] IHtmlEncoder htmlEncoder,
     [NotNull] IUrlEncoder urlEncoder,
     [NotNull] IJavaScriptStringEncoder javaScriptStringEncoder)
     : base(htmlGenerator, viewEngine, metadataProvider, htmlEncoder, urlEncoder, javaScriptStringEncoder)
 {
 }
Example #5
0
 /// <summary>
 /// Execute an individual request
 /// </summary>
 /// <param name="context"></param>
 public async Task ExecuteAsync(HttpContext context)
 {
     Context = context;
     Request = Context.Request;
     Response = Context.Response;
     Output = new StreamWriter(Response.Body, Encoding.UTF8, 4096, leaveOpen: true);
     HtmlEncoder = context.ApplicationServices.GetHtmlEncoder();
     UrlEncoder = context.ApplicationServices.GetUrlEncoder();
     JavaScriptStringEncoder = context.ApplicationServices.GetJavaScriptStringEncoder();
     await ExecuteAsync();
     Output.Dispose();
 }
        /// <summary>
        /// JavaScript-escapes a string and writes the result to the supplied output.
        /// </summary>
        public static void JavaScriptStringEncode(this IJavaScriptStringEncoder javaScriptStringEncoder, string value, TextWriter output)
        {
            if (javaScriptStringEncoder == null)
            {
                throw new ArgumentNullException(nameof(javaScriptStringEncoder));
            }

            if (!String.IsNullOrEmpty(value))
            {
                javaScriptStringEncoder.JavaScriptStringEncode(value, 0, value.Length, output);
            }
        }
Example #7
0
 /// <summary>
 /// Creates a new <see cref="ScriptTagHelper"/>.
 /// </summary>
 /// <param name="logger">The <see cref="ILogger{ScriptTagHelper}"/>.</param>
 /// <param name="hostingEnvironment">The <see cref="IHostingEnvironment"/>.</param>
 /// <param name="cache">The <see cref="IMemoryCache"/>.</param>
 /// <param name="htmlEncoder">The <see cref="IHtmlEncoder"/>.</param>
 /// <param name="javaScriptEncoder">The <see cref="IJavaScriptStringEncoder"/>.</param>
 public ScriptTagHelper(
     ILogger<ScriptTagHelper> logger,
     IHostingEnvironment hostingEnvironment,
     IMemoryCache cache,
     IHtmlEncoder htmlEncoder,
     IJavaScriptStringEncoder javaScriptEncoder)
 {
     Logger = logger;
     HostingEnvironment = hostingEnvironment;
     Cache = cache;
     HtmlEncoder = htmlEncoder;
     JavaScriptEncoder = javaScriptEncoder;
 }
Example #8
0
 /// <summary>
 /// Creates a new <see cref="ScriptTagHelper"/>.
 /// </summary>
 /// <param name="logger">The <see cref="ILogger{ScriptTagHelper}"/>.</param>
 /// <param name="hostingEnvironment">The <see cref="IHostingEnvironment"/>.</param>
 /// <param name="cache">The <see cref="IMemoryCache"/>.</param>
 /// <param name="htmlEncoder">The <see cref="IHtmlEncoder"/>.</param>
 /// <param name="javaScriptEncoder">The <see cref="IJavaScriptStringEncoder"/>.</param>
 public ScriptTagHelper(
     ILogger <ScriptTagHelper> logger,
     IHostingEnvironment hostingEnvironment,
     IMemoryCache cache,
     IHtmlEncoder htmlEncoder,
     IJavaScriptStringEncoder javaScriptEncoder)
 {
     Logger             = logger;
     HostingEnvironment = hostingEnvironment;
     Cache             = cache;
     HtmlEncoder       = htmlEncoder;
     JavaScriptEncoder = javaScriptEncoder;
 }
Example #9
0
        /// <summary>
        /// Execute an individual request
        /// </summary>
        /// <param name="context"></param>
        public async Task ExecuteAsync(HttpContext context)
        {
            Context                 = context;
            Request                 = Context.Request;
            Response                = Context.Response;
            Output                  = new StreamWriter(Response.Body, Encoding.UTF8, 4096, leaveOpen: true);
            HtmlEncoder             = context.ApplicationServices.GetHtmlEncoder();
            UrlEncoder              = context.ApplicationServices.GetUrlEncoder();
            JavaScriptStringEncoder = context.ApplicationServices.GetJavaScriptStringEncoder();
            await ExecuteAsync();

            Output.Dispose();
        }
Example #10
0
 /// <summary>
 /// Creates a new <see cref="LinkTagHelper"/>.
 /// </summary>
 /// <param name="logger">The <see cref="ILogger{ScriptTagHelper}"/>.</param>
 /// <param name="hostingEnvironment">The <see cref="IHostingEnvironment"/>.</param>
 /// <param name="cache">The <see cref="IMemoryCache"/>.</param>
 /// <param name="htmlEncoder">The <see cref="IHtmlEncoder"/>.</param>
 /// <param name="javaScriptEncoder">The <see cref="IJavaScriptStringEncoder"/>.</param>
 /// <param name="urlHelper">The <see cref="IUrlHelper"/>.</param>
 public LinkTagHelper(
     ILogger <LinkTagHelper> logger,
     IHostingEnvironment hostingEnvironment,
     IMemoryCache cache,
     IHtmlEncoder htmlEncoder,
     IJavaScriptStringEncoder javaScriptEncoder,
     IUrlHelper urlHelper)
     : base(urlHelper, htmlEncoder)
 {
     Logger             = logger;
     HostingEnvironment = hostingEnvironment;
     Cache             = cache;
     JavaScriptEncoder = javaScriptEncoder;
 }
Example #11
0
 /// <summary>
 /// Initializes a new instance of the <see cref="HtmlHelper"/> class.
 /// </summary>
 public HtmlHelper(
     [NotNull] IHtmlGenerator htmlGenerator,
     [NotNull] ICompositeViewEngine viewEngine,
     [NotNull] IModelMetadataProvider metadataProvider,
     [NotNull] IHtmlEncoder htmlEncoder,
     [NotNull] IUrlEncoder urlEncoder,
     [NotNull] IJavaScriptStringEncoder javaScriptStringEncoder)
 {
     _viewEngine             = viewEngine;
     _htmlGenerator          = htmlGenerator;
     MetadataProvider        = metadataProvider;
     HtmlEncoder             = htmlEncoder;
     UrlEncoder              = urlEncoder;
     JavaScriptStringEncoder = javaScriptStringEncoder;
 }
        public GutekScriptTagHelper(ILogger<GutekScriptTagHelper> logger
            , IHostingEnvironment env
            , IMemoryCache cache
            , IHtmlEncoder htmlEncoder
            , IJavaScriptStringEncoder javaScriptEncoder
            , IUrlHelper urlHelper)
            : base(urlHelper, htmlEncoder)
        {
            Logger = logger;
            HostingEnvironment = env;
            Cache = cache;
            JavaScriptEncoder = javaScriptEncoder;

            logger.LogInformation("Initializing Gutek Script Tag Helper");
        }
 /// <summary>
 /// Creates a new <see cref="WebpackDevServerLinkTagHelper"/>.
 /// </summary>
 /// <param name="logger">The <see cref="ILogger{ScriptTagHelper}"/>.</param>
 /// <param name="hostingEnvironment">The <see cref="IHostingEnvironment"/>.</param>
 /// <param name="cache">The <see cref="IMemoryCache"/>.</param>
 /// <param name="htmlEncoder">The <see cref="IHtmlEncoder"/>.</param>
 /// <param name="javaScriptEncoder">The <see cref="IJavaScriptStringEncoder"/>.</param>
 /// <param name="urlHelper">The <see cref="IUrlHelper"/>.</param>
 public WebpackDevServerLinkTagHelper(
     ILogger<WebpackDevServerLinkTagHelper> logger,
     IHostingEnvironment hostingEnvironment,
     IMemoryCache cache,
     IHtmlEncoder htmlEncoder,
     IJavaScriptStringEncoder javaScriptEncoder,
     IUrlHelper urlHelper,
     IOptions<DevelopmentSettings> options)
     : base(urlHelper, htmlEncoder)
 {
     Logger = logger;
     HostingEnvironment = hostingEnvironment;
     Cache = cache;
     JavaScriptEncoder = javaScriptEncoder;
     devSettings = options.Value;
 }
        /// <summary>
        /// Encodes a .NET string array for safe use as a JavaScript array literal, including inline in an HTML file.
        /// </summary>
        public static string Encode(IJavaScriptStringEncoder encoder, IEnumerable<string> values)
        {
            var writer = new StringWriter();

            var firstAdded = false;

            writer.Write('[');
            
            foreach (var value in values)
            {
                if (firstAdded)
                {
                    writer.Write(',');
                }
                writer.Write('"');
                encoder.JavaScriptStringEncode(value, writer);
                writer.Write('"');
                firstAdded = true;
            }

            writer.Write(']');

            return writer.ToString();
        }
Example #15
0
        /// <summary>
        /// Encodes a .NET string array for safe use as a JavaScript array literal, including inline in an HTML file.
        /// </summary>
        public static string Encode(IJavaScriptStringEncoder encoder, IEnumerable <string> values)
        {
            var writer = new StringWriter();

            var firstAdded = false;

            writer.Write('[');

            foreach (var value in values)
            {
                if (firstAdded)
                {
                    writer.Write(',');
                }
                writer.Write('"');
                encoder.JavaScriptStringEncode(value, writer);
                writer.Write('"');
                firstAdded = true;
            }

            writer.Write(']');

            return(writer.ToString());
        }
Example #16
0
 /// <summary>
 /// Creates a new <see cref="LinkTagHelper"/>.
 /// </summary>
 /// <param name="logger">The <see cref="ILogger{ScriptTagHelper}"/>.</param>
 /// <param name="hostingEnvironment">The <see cref="IHostingEnvironment"/>.</param>
 /// <param name="cache">The <see cref="IMemoryCache"/>.</param>
 /// <param name="htmlEncoder">The <see cref="IHtmlEncoder"/>.</param>
 /// <param name="javaScriptEncoder">The <see cref="IJavaScriptStringEncoder"/>.</param>
 /// <param name="urlHelper">The <see cref="IUrlHelper"/>.</param>
 public LinkTagHelper(
     ILogger<LinkTagHelper> logger,
     IHostingEnvironment hostingEnvironment,
     IMemoryCache cache,
     IHtmlEncoder htmlEncoder,
     IJavaScriptStringEncoder javaScriptEncoder,
     IUrlHelper urlHelper)
     : base(urlHelper, htmlEncoder)
 {
     Logger = logger;
     HostingEnvironment = hostingEnvironment;
     Cache = cache;
     JavaScriptEncoder = javaScriptEncoder;
 }