优先从github获取meta

This commit is contained in:
陈国伟 2021-06-18 08:47:27 +08:00
parent e084a0992c
commit 2822745937
2 changed files with 22 additions and 3 deletions

View File

@ -20,6 +20,7 @@ namespace FastGithub.Scanner.DomainAddressProviders
{ {
private readonly IOptionsMonitor<GithubOptions> options; private readonly IOptionsMonitor<GithubOptions> options;
private readonly ILogger<GithubMetaProvider> logger; private readonly ILogger<GithubMetaProvider> logger;
private const string META_URI = "https://api.github.com/meta";
/// <summary> /// <summary>
/// Github公开的域名与ip关系提供者 /// Github公开的域名与ip关系提供者
@ -49,7 +50,7 @@ namespace FastGithub.Scanner.DomainAddressProviders
try try
{ {
using var httpClient = new HttpClient(); using var httpClient = new HttpClient();
var meta = await httpClient.GetFromJsonAsync<Meta>(setting.MetaUri); var meta = await this.GetMetaAsync(httpClient, setting.MetaUri);
if (meta != null) if (meta != null)
{ {
return meta.ToDomainAddresses(); return meta.ToDomainAddresses();
@ -63,6 +64,25 @@ namespace FastGithub.Scanner.DomainAddressProviders
return Enumerable.Empty<DomainAddress>(); return Enumerable.Empty<DomainAddress>();
} }
/// <summary>
/// 尝试获取meta
/// </summary>
/// <param name="httpClient"></param>
/// <param name="metaUri"></param>
/// <returns></returns>
private async Task<Meta?> GetMetaAsync(HttpClient httpClient, Uri metaUri)
{
try
{
return await httpClient.GetFromJsonAsync<Meta>(META_URI);
}
catch (Exception)
{
return await httpClient.GetFromJsonAsync<Meta>(metaUri);
}
}
/// <summary> /// <summary>
/// github的meta结构 /// github的meta结构
/// </summary> /// </summary>

View File

@ -12,8 +12,7 @@
}, },
"DominAddressProviders": { "DominAddressProviders": {
"GithubMetaProvider": { "GithubMetaProvider": {
"Enable": true, "Enable": true,
// "MetaUri": "https://api.github.com/meta", // meta×ÊÔ´uri
"MetaUri": "https://gitee.com/jiulang/fast-github/raw/master/FastGithub/meta.json" "MetaUri": "https://gitee.com/jiulang/fast-github/raw/master/FastGithub/meta.json"
}, },
"IPAddressComProvider": { "IPAddressComProvider": {