diff --git a/FastGithub.Configuration/DomainPattern.cs b/FastGithub.Configuration/DomainPattern.cs index 12f425e..0e841f2 100644 --- a/FastGithub.Configuration/DomainPattern.cs +++ b/FastGithub.Configuration/DomainPattern.cs @@ -7,7 +7,7 @@ namespace FastGithub.Configuration /// 表示域名表达式 /// *表示除.之外任意0到多个字符 /// - sealed class DomainPattern : IComparable + public class DomainPattern : IComparable { private readonly Regex regex; private readonly string domainPattern; diff --git a/FastGithub.Configuration/FastGithubConfig.cs b/FastGithub.Configuration/FastGithubConfig.cs index 17fcb40..bf929e5 100644 --- a/FastGithub.Configuration/FastGithubConfig.cs +++ b/FastGithub.Configuration/FastGithubConfig.cs @@ -117,9 +117,9 @@ namespace FastGithub.Configuration /// 获取所有域名表达式 /// /// - public string[] GetDomainPatterns() + public DomainPattern[] GetDomainPatterns() { - return this.domainConfigs.Keys.Select(item => item.ToString()).ToArray(); + return this.domainConfigs.Keys.ToArray(); } } } diff --git a/FastGithub.DomainResolve/DomainSpeedTestService.cs b/FastGithub.DomainResolve/DomainSpeedTestService.cs index 890305c..c957ff2 100644 --- a/FastGithub.DomainResolve/DomainSpeedTestService.cs +++ b/FastGithub.DomainResolve/DomainSpeedTestService.cs @@ -1,4 +1,5 @@ -using System; +using FastGithub.Configuration; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -71,7 +72,7 @@ namespace FastGithub.DomainResolve return; } - var fileStream = File.OpenRead(DATA_FILE); + using var fileStream = File.OpenRead(DATA_FILE); var domains = await JsonSerializer.DeserializeAsync(fileStream, cancellationToken: cancellationToken); if (domains == null) { @@ -91,11 +92,24 @@ namespace FastGithub.DomainResolve /// 保存数据 /// /// - public async Task SaveDataAsync() + public async Task SaveDataAsync() { - var domains = this.domainIPAddressHashSet.Keys.ToArray(); - using var fileStream = File.OpenWrite(DATA_FILE); - await JsonSerializer.SerializeAsync(fileStream, domains); + var domains = this.domainIPAddressHashSet.Keys + .Select(item => new DomainPattern(item)) + .OrderBy(item => item) + .Select(item => item.ToString()) + .ToArray(); + + try + { + using var fileStream = File.OpenWrite(DATA_FILE); + await JsonSerializer.SerializeAsync(fileStream, domains, new JsonSerializerOptions { WriteIndented = true }); + return true; + } + catch (Exception) + { + return false; + } } ///