AngleSharp by AngleSharp

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

 DocumentLoader

Represents the default document loader. This class can be inherited.
using AngleSharp.Events; using AngleSharp.Extensions; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace AngleSharp.Network.Default { public class DocumentLoader : IDocumentLoader { private readonly IEnumerable<IRequester> _requesters; private readonly IBrowsingContext _context; private readonly Predicate<IRequest> _filter; public DocumentLoader(IEnumerable<IRequester> requesters, IBrowsingContext context, Predicate<IRequest> filter = null) { _requesters = requesters; _context = context; _filter = (filter ?? ((Predicate<IRequest>)((IRequest _) => true))); } public virtual Task<IResponse> LoadAsync(DocumentRequest request, CancellationToken cancel) { IEventAggregator events = _context.Configuration.Events; Request request2 = new Request(); request2.Address = request.Target; request2.Content = request.Body; request2.Method = request.Method; Request request3 = request2; foreach (KeyValuePair<string, string> header in request.Headers) { request3.Headers[header.Key] = header.Value; } string cookie = _context.Configuration.GetCookie(request.Target.Origin); if (cookie != null) request3.Headers[HeaderNames.Cookie] = cookie; if (!_filter(request3)) return TaskEx.FromResult<IResponse>(null); return _requesters.LoadAsync(request3, events, cancel); } } }