AngleSharp by AngleSharp

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

 DataRequester

public sealed class DataRequester : IRequester
The default (ready-to-use) data scheme requester.
using AngleSharp.Extensions; using System; using System.IO; using System.Net; using System.Threading; using System.Threading.Tasks; namespace AngleSharp.Network.Default { public sealed class DataRequester : IRequester { private static readonly string Base64Section = ";base64"; public bool SupportsProtocol(string protocol) { return protocol.Is(ProtocolNames.Data); } public Task<IResponse> RequestAsync(IRequest request, CancellationToken cancel) { MemoryStream memoryStream = new MemoryStream(); string text = request.Address.Data; if (text.StartsWith(",")) text = MimeTypeNames.Plain + text; string[] array = text.SplitCommas(); Response response = new Response { Address = request.Address, Content = memoryStream, StatusCode = HttpStatusCode.BadRequest }; if (array.Length == 2) { int num = array[0].IndexOf(Base64Section); bool flag = num >= 0; string value = flag ? array[0].Remove(num, Base64Section.Length) : array[0]; try { byte[] array2 = flag ? Convert.FromBase64String(array[1]) : array[1].UrlDecode(); memoryStream.Write(array2, 0, array2.Length); memoryStream.Position = 0; response.Headers.Add(HeaderNames.ContentType, value); response.StatusCode = HttpStatusCode.OK; } catch (FormatException) { } } return TaskEx.FromResult((IResponse)response); } } }