域名排序

This commit is contained in:
陈国伟 2021-09-28 12:03:16 +08:00
parent f29dca6b43
commit c542c628f1
3 changed files with 23 additions and 9 deletions

View File

@ -7,7 +7,7 @@ namespace FastGithub.Configuration
/// 表示域名表达式 /// 表示域名表达式
/// *表示除.之外任意0到多个字符 /// *表示除.之外任意0到多个字符
/// </summary> /// </summary>
sealed class DomainPattern : IComparable<DomainPattern> public class DomainPattern : IComparable<DomainPattern>
{ {
private readonly Regex regex; private readonly Regex regex;
private readonly string domainPattern; private readonly string domainPattern;

View File

@ -117,9 +117,9 @@ namespace FastGithub.Configuration
/// 获取所有域名表达式 /// 获取所有域名表达式
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public string[] GetDomainPatterns() public DomainPattern[] GetDomainPatterns()
{ {
return this.domainConfigs.Keys.Select(item => item.ToString()).ToArray(); return this.domainConfigs.Keys.ToArray();
} }
} }
} }

View File

@ -1,4 +1,5 @@
using System; using FastGithub.Configuration;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
@ -71,7 +72,7 @@ namespace FastGithub.DomainResolve
return; return;
} }
var fileStream = File.OpenRead(DATA_FILE); using var fileStream = File.OpenRead(DATA_FILE);
var domains = await JsonSerializer.DeserializeAsync<string[]>(fileStream, cancellationToken: cancellationToken); var domains = await JsonSerializer.DeserializeAsync<string[]>(fileStream, cancellationToken: cancellationToken);
if (domains == null) if (domains == null)
{ {
@ -91,11 +92,24 @@ namespace FastGithub.DomainResolve
/// 保存数据 /// 保存数据
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public async Task SaveDataAsync() public async Task<bool> SaveDataAsync()
{ {
var domains = this.domainIPAddressHashSet.Keys.ToArray(); var domains = this.domainIPAddressHashSet.Keys
using var fileStream = File.OpenWrite(DATA_FILE); .Select(item => new DomainPattern(item))
await JsonSerializer.SerializeAsync(fileStream, domains); .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;
}
} }
/// <summary> /// <summary>