AngleSharp by AngleSharp

<PackageReference Include="AngleSharp" Version="0.9.10" />

 ConfigurationExtensions

public static class ConfigurationExtensions
A set of useful extensions for Configuration (or derived) objects.
using AngleSharp.Dom.Css; using AngleSharp.Extensions; using AngleSharp.Network; using AngleSharp.Network.Default; using AngleSharp.Services; using AngleSharp.Services.Default; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; namespace AngleSharp { public static class ConfigurationExtensions { public sealed class LoaderSetup { public bool IsNavigationEnabled { get; set; } public bool IsResourceLoadingEnabled { get; set; } public Predicate<IRequest> Filter { get; set; } } public static Configuration With(this IConfiguration configuration, object service) { if (configuration == null) throw new ArgumentNullException("configuration"); if (service == null) throw new ArgumentNullException("service"); return new Configuration(configuration.Services.Concat(service)); } public static Configuration With(this IConfiguration configuration, IEnumerable<object> services) { if (configuration == null) throw new ArgumentNullException("configuration"); if (services == null) throw new ArgumentNullException("services"); return new Configuration(configuration.Services.Concat(services)); } public static IConfiguration With<TService>(this IConfiguration configuration, Func<IBrowsingContext, TService> creator) { IEnumerable<object> enumerable = configuration.Services; IEnumerable<Func<IBrowsingContext, TService>> enumerable2 = configuration.Services.OfType<Func<IBrowsingContext, TService>>(); if (enumerable2.Any()) enumerable = enumerable.Except(enumerable2); return new Configuration(enumerable.Concat(creator)); } public static Configuration SetCulture(this IConfiguration configuration, string name) { CultureInfo culture = new CultureInfo(name); return configuration.SetCulture(culture); } public static Configuration SetCulture(this IConfiguration configuration, CultureInfo culture) { return configuration.With(culture); } public static IConfiguration WithCss(this IConfiguration configuration, Action<CssStyleEngine> setup = null) { if (configuration == null) throw new ArgumentNullException("configuration"); if (!configuration.GetServices<IStylingProvider>().Any()) { StylingService stylingService = new StylingService(); CssStyleEngine cssStyleEngine = new CssStyleEngine(); setup?.Invoke(cssStyleEngine); stylingService.Register(cssStyleEngine); return configuration.With(stylingService); } return configuration; } public static IConfiguration WithDefaultLoader(this IConfiguration configuration, Action<LoaderSetup> setup = null, IEnumerable<IRequester> requesters = null) { if (configuration == null) throw new ArgumentNullException("configuration"); configuration = configuration.With(requesters ?? new IRequester[2] { new HttpRequester(null), new DataRequester() }); LoaderSetup config = new LoaderSetup { Filter = null, IsNavigationEnabled = true, IsResourceLoadingEnabled = false }; configuration.GetFactory<IServiceFactory>(); setup?.Invoke(config); if (config.IsNavigationEnabled) configuration = configuration.With((Func<IBrowsingContext, IDocumentLoader>)((IBrowsingContext ctx) => new DocumentLoader(ctx, config.Filter))); if (config.IsResourceLoadingEnabled) configuration = configuration.With((Func<IBrowsingContext, IResourceLoader>)((IBrowsingContext ctx) => new ResourceLoader(ctx, config.Filter))); return configuration; } public static IConfiguration WithLocaleBasedEncoding(this IConfiguration configuration) { if (configuration == null) throw new ArgumentException("configuration"); if (!configuration.GetServices<IEncodingProvider>().Any()) { LocaleEncodingProvider service = new LocaleEncodingProvider(); return configuration.With(service); } return configuration; } public static IConfiguration WithCookies(this IConfiguration configuration) { if (configuration == null) throw new ArgumentNullException("configuration"); if (!configuration.GetServices<ICookieProvider>().Any()) { MemoryCookieProvider service = new MemoryCookieProvider(); return configuration.With(service); } return configuration; } } }