using HtmlAgilityPack; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.Json; using System.Threading.Tasks; namespace Beam.Dynamic { public class DropDownDataProvider : IDataProvider, IDataProvider, IDataProvider { public IBinding? Content { get; set; } public SourceLink[] Get(HtmlDocument document) { if (Content is null) return []; var node = Content.Select(document); if (node is null) return []; List links = []; foreach (var child in node.ChildNodes.Where(x => x.Name == "option")) { var childValue = child.GetAttributeValue("value", null); if (!Uri.TryCreate(childValue, UriKind.Absolute, out _)) continue; links.Add(new SourceLink(childValue)); } return links.ToArray(); } string[] IDataProvider.Get(HtmlDocument document) { return this.Get(document).Select(x => x.Link.AbsoluteUri).ToArray(); } string IDataProvider.Get(HtmlDocument document) { return JsonSerializer.Serialize(this.Get(document)); } } }