ConfigurationExtensions
A set of useful extensions for Configuration (or derived) objects.
using AngleSharp.Browser;
using AngleSharp.Common;
using AngleSharp.Dom;
using AngleSharp.Io;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Runtime.CompilerServices;
namespace AngleSharp
{
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(0)]
public static class ConfigurationExtensions
{
public static IConfiguration With(this IConfiguration configuration, object service)
{
IConfiguration configuration2 = configuration;
if (configuration2 == null)
throw new ArgumentNullException("configuration");
configuration = configuration2;
object obj = service;
if (obj == null)
throw new ArgumentNullException("service");
service = obj;
return new Configuration(configuration.Services.Concat(service));
}
public static IConfiguration WithOnly<[System.Runtime.CompilerServices.Nullable(2)] TService>(this IConfiguration configuration, TService service)
{
if (service == null)
throw new ArgumentNullException("service");
return configuration.Without<TService>().With(service);
}
public static IConfiguration WithOnly<[System.Runtime.CompilerServices.Nullable(2)] TService>(this IConfiguration configuration, Func<IBrowsingContext, TService> creator)
{
Func<IBrowsingContext, TService> func = creator;
if (func == null)
throw new ArgumentNullException("creator");
creator = func;
return configuration.Without<TService>().With(creator);
}
public static IConfiguration Without(this IConfiguration configuration, object service)
{
IConfiguration configuration2 = configuration;
if (configuration2 == null)
throw new ArgumentNullException("configuration");
configuration = configuration2;
object obj = service;
if (obj == null)
throw new ArgumentNullException("service");
service = obj;
return new Configuration(configuration.Services.Except(service));
}
public static IConfiguration With(this IConfiguration configuration, IEnumerable<object> services)
{
IConfiguration configuration2 = configuration;
if (configuration2 == null)
throw new ArgumentNullException("configuration");
configuration = configuration2;
IEnumerable<object> enumerable = services;
if (enumerable == null)
throw new ArgumentNullException("services");
services = enumerable;
return new Configuration(services.Concat(configuration.Services));
}
public static IConfiguration Without(this IConfiguration configuration, IEnumerable<object> services)
{
IConfiguration configuration2 = configuration;
if (configuration2 == null)
throw new ArgumentNullException("configuration");
configuration = configuration2;
IEnumerable<object> enumerable = services;
if (enumerable == null)
throw new ArgumentNullException("services");
services = enumerable;
return new Configuration(configuration.Services.Except(services));
}
public static IConfiguration With<[System.Runtime.CompilerServices.Nullable(2)] TService>(this IConfiguration configuration, Func<IBrowsingContext, TService> creator)
{
Func<IBrowsingContext, TService> func = creator;
if (func == null)
throw new ArgumentNullException("creator");
creator = func;
return configuration.With((object)creator);
}
public static IConfiguration Without<[System.Runtime.CompilerServices.Nullable(2)] TService>(this IConfiguration configuration)
{
IConfiguration configuration2 = configuration;
if (configuration2 == null)
throw new ArgumentNullException("configuration");
configuration = configuration2;
IEnumerable<object> services = configuration.Services.OfType<TService>().Cast<object>();
IEnumerable<Func<IBrowsingContext, TService>> services2 = configuration.Services.OfType<Func<IBrowsingContext, TService>>();
return configuration.Without(services).Without(services2);
}
public static bool Has<[System.Runtime.CompilerServices.Nullable(2)] TService>(this IConfiguration configuration)
{
IConfiguration configuration2 = configuration;
if (configuration2 == null)
throw new ArgumentNullException("configuration");
configuration = configuration2;
if (!configuration.Services.OfType<TService>().Any())
return configuration.Services.OfType<Func<IBrowsingContext, TService>>().Any();
return true;
}
public static IConfiguration WithDefaultLoader(this IConfiguration configuration, [System.Runtime.CompilerServices.Nullable(2)] LoaderOptions setup = null)
{
LoaderOptions config = setup ?? new LoaderOptions();
if (!configuration.Has<IRequester>())
configuration = configuration.With(new DefaultHttpRequester(null, null));
if (!config.IsNavigationDisabled)
configuration = configuration.With((Func<IBrowsingContext, IDocumentLoader>)((IBrowsingContext ctx) => new DefaultDocumentLoader(ctx, config.Filter)));
if (config.IsResourceLoadingEnabled)
configuration = configuration.With((Func<IBrowsingContext, IResourceLoader>)((IBrowsingContext ctx) => new DefaultResourceLoader(ctx, config.Filter)));
return configuration;
}
public static IConfiguration WithCulture(this IConfiguration configuration, string name)
{
CultureInfo culture = new CultureInfo(name);
return configuration.WithCulture(culture);
}
public static IConfiguration WithCulture(this IConfiguration configuration, CultureInfo culture)
{
return configuration.With(culture);
}
public static IConfiguration WithMetaRefresh(this IConfiguration configuration, [System.Runtime.CompilerServices.Nullable(new byte[] {
2,
1
})] Predicate<Url> shouldRefresh = null)
{
RefreshMetaHandler service = new RefreshMetaHandler(shouldRefresh);
return configuration.With(service);
}
public static IConfiguration WithLocaleBasedEncoding(this IConfiguration configuration)
{
LocaleEncodingProvider service = new LocaleEncodingProvider();
return configuration.With(service);
}
public static IConfiguration WithDefaultCookies(this IConfiguration configuration)
{
MemoryCookieProvider service = new MemoryCookieProvider();
return configuration.With(service);
}
}
}