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); }
/// <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)); } }
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); }
/// <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) { }
/// <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); } }
/// <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; }
/// <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; }
/// <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; }
/// <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(); }
/// <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()); }
/// <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; }