Skip to content

Core Interfaces

All interfaces live in the WebTools.NET.Abstractions namespace.

IWebAccessService

Plain-HTTP URL reachability checking.

public interface IWebAccessService
{
    Task<UrlCheckResult> CheckReachabilityAsync(string url, CancellationToken ct = default);
}

Implementation: WebAccessService.

IWebSearchProvider

Single web search execution.

public interface IWebSearchProvider
{
    Task<SearchResult> SearchAsync(
        string query,
        int maxResults = 5,
        CancellationToken ct = default);
}

Implementations: DuckDuckGoSearchProvider, PlaywrightSearchProvider, CloakBrowserSearchProvider.

IWebContentFetcher

Browser-based page content retrieval. Extends IAsyncDisposable.

public interface IWebContentFetcher : IAsyncDisposable
{
    Task<UrlCheckResult> CheckReachabilityAsync(string url, CancellationToken ct = default);

    Task<WebContent> FetchAsync(string url, CancellationToken ct = default);
}

Implementations: PlaywrightContentFetcher, CloakBrowserContentFetcher.

IBrowserInteraction

Low-level browser session control. Extends IAsyncDisposable.

public interface IBrowserInteraction : IAsyncDisposable
{
    Task<bool> CheckReachabilityAsync(string url, CancellationToken ct = default);

    Task ClickAsync(string selector, CancellationToken ct = default);

    Task FillAsync(string selector, string value, CancellationToken ct = default);

    Task<string> GetContentAsync(CancellationToken ct = default);

    Task<string> GetCurrentUrlAsync(CancellationToken ct = default);

    Task<string> GetHtmlAsync(CancellationToken ct = default);

    Task NavigateAsync(string url, CancellationToken ct = default);
}

Implementations: PlaywrightSession, CloakBrowserSession.

IGeoRegionProvider

Region detection.

public interface IGeoRegionProvider
{
    Task<string> DetectRegionAsync(CancellationToken ct = default);
}

Implementation: GeoRegionAgent. Returns one of us, eu, china, intl.

EBrowserEngine

Engine selector for DI registration.

public enum EBrowserEngine
{
    Playwright,
    CloakBrowser
}