From c542c628f1512ec29fc9e1128a0224a14d870b69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=9B=BD=E4=BC=9F?= <366193849@qq.com> Date: Tue, 28 Sep 2021 12:03:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=9F=E5=90=8D=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FastGithub.Configuration/DomainPattern.cs | 2 +- FastGithub.Configuration/FastGithubConfig.cs | 4 +-- .../DomainSpeedTestService.cs | 26 ++++++++++++++----- 3 files changed, 23 insertions(+), 9 deletions(-) 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; + } } ///