ConfigurationExtensions
Represents a helper to construct objects with externally defined
classes and libraries.
using AngleSharp.Commands;
using AngleSharp.Dom;
using AngleSharp.Network;
using AngleSharp.Services;
using AngleSharp.Services.Media;
using AngleSharp.Services.Scripting;
using AngleSharp.Services.Styling;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.Linq;
using System.Text;
namespace AngleSharp.Extensions
{
[DebuggerStepThrough]
internal static class ConfigurationExtensions
{
public static Encoding DefaultEncoding(this IConfiguration configuration)
{
IEncodingProvider provider = configuration.GetProvider<IEncodingProvider>();
string language = configuration.GetLanguage();
if (provider == null)
return Encoding.UTF8;
return provider.Suggest(language);
}
public static CultureInfo GetCulture(this IConfiguration configuration)
{
return configuration.GetService<CultureInfo>() ?? CultureInfo.CurrentUICulture;
}
public static CultureInfo GetCultureFromLanguage(this IConfiguration configuration, string language)
{
try {
return new CultureInfo(language);
} catch (CultureNotFoundException) {
return configuration.GetCulture();
}
}
public static string GetLanguage(this IConfiguration configuration)
{
return configuration.GetCulture().Name;
}
public static TFactory GetFactory<TFactory>(this IConfiguration configuration)
{
return configuration.GetServices<TFactory>().Single();
}
public static TProvider GetProvider<TProvider>(this IConfiguration configuration)
{
return configuration.GetServices<TProvider>().SingleOrDefault();
}
public static TService GetService<TService>(this IConfiguration configuration)
{
return configuration.GetServices<TService>().FirstOrDefault();
}
public static IEnumerable<TService> GetServices<TService>(this IConfiguration configuration)
{
return configuration.Services.OfType<TService>();
}
public static IResourceService<TResource> GetResourceService<TResource>(this IConfiguration configuration, string type) where TResource : IResourceInfo
{
foreach (IResourceService<TResource> service in configuration.GetServices<IResourceService<TResource>>()) {
if (service.SupportsType(type))
return service;
}
return null;
}
public static string GetCookie(this IConfiguration configuration, string origin)
{
ICookieProvider provider = configuration.GetProvider<ICookieProvider>();
if (provider == null)
return string.Empty;
return provider.GetCookie(origin);
}
public static void SetCookie(this IConfiguration configuration, string origin, string value)
{
configuration.GetProvider<ICookieProvider>()?.SetCookie(origin, value);
}
public static ISpellCheckService GetSpellCheck(this IConfiguration configuration, string language)
{
ISpellCheckService result = null;
CultureInfo cultureFromLanguage = configuration.GetCultureFromLanguage(language);
foreach (ISpellCheckService service in configuration.GetServices<ISpellCheckService>()) {
if (service.Culture.Equals(cultureFromLanguage))
return service;
if (service.Culture.TwoLetterISOLanguageName.Is(cultureFromLanguage.TwoLetterISOLanguageName))
result = service;
}
return result;
}
public static ICssStyleEngine GetCssStyleEngine(this IConfiguration configuration)
{
return configuration.GetStyleEngine(MimeTypeNames.Css) as ICssStyleEngine;
}
public static IStyleEngine GetStyleEngine(this IConfiguration configuration, string type)
{
return configuration.GetProvider<IStylingProvider>()?.GetEngine(type);
}
public static bool IsScripting(this IConfiguration configuration)
{
if (configuration != null)
return configuration.GetProvider<IScriptingProvider>() != null;
return false;
}
public static IScriptEngine GetScriptEngine(this IConfiguration configuration, string type)
{
return configuration.GetProvider<IScriptingProvider>()?.GetEngine(type);
}
public static IBrowsingContext NewContext(this IConfiguration configuration, Sandboxes security = Sandboxes.None)
{
return configuration.GetFactory<IContextFactory>().Create(configuration, security);
}
public static IBrowsingContext FindContext(this IConfiguration configuration, string name)
{
return configuration.GetFactory<IContextFactory>().Find(name);
}
public static ICommand GetCommand(this IConfiguration configuration, string commandId)
{
return configuration.GetProvider<ICommandProvider>()?.GetCommand(commandId);
}
}
}