using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using System.Net; namespace FastGithub.Scanner { /// /// github解析器 /// [Service(ServiceLifetime.Singleton, ServiceType = typeof(IGithubResolver))] sealed class GithubResolver : IGithubResolver { private readonly GithubScanResults githubScanResults; private readonly IOptionsMonitor options; /// /// github解析器 /// /// /// public GithubResolver( GithubScanResults githubScanResults, IOptionsMonitor options) { this.githubScanResults = githubScanResults; this.options = options; } /// /// 是否支持指定的域名 /// /// /// public bool IsSupported(string domain) { return this.options.CurrentValue.Domains.Contains(domain); } /// /// 解析指定的域名 /// /// /// public IPAddress? Resolve(string domain) { return this.IsSupported(domain) ? this.githubScanResults.FindBestAddress(domain) : default; } } }