using System.Diagnostics.CodeAnalysis;
using System.Net;
namespace FastGithub.Configuration
{
    /// 
    /// dns配置
    /// 
    public record DnsConfig
    {
        /// 
        /// IP地址
        /// 
        [AllowNull]
        public string IPAddress { get; init; }
        /// 
        /// 端口
        /// 
        public int Port { get; init; } = 53;
        /// 
        /// 转换为IPEndPoint
        /// 
        /// 
        /// 
        public IPEndPoint ToIPEndPoint()
        {
            if (System.Net.IPAddress.TryParse(this.IPAddress, out var address) == false)
            {
                throw new FastGithubException($"无效的ip:{this.IPAddress}");
            }
            if (this.Port == 53 && LocalMachine.ContainsIPAddress(address))
            {
                throw new FastGithubException($"配置的dns值不能指向{nameof(FastGithub)}自身:{this.IPAddress}:{this.Port}");
            }
            return new IPEndPoint(address, this.Port);
        }
    }
}