Skip to content

Commit af56ffb

Browse files
authored
feat: add api dev environment support
1 parent 807542a commit af56ffb

File tree

7 files changed

+28
-8
lines changed

7 files changed

+28
-8
lines changed

BangumiNet.Api/ClientBuilder.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,29 +16,37 @@ public static Clients Build(IApiSettings setting)
1616
var httpClient = new HttpClient();
1717
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", setting.UserAgent);
1818

19-
return Build(authProvider, httpClient);
19+
return Build(authProvider, httpClient, setting.DevEnvironment);
2020
}
2121

2222
/// <summary>
2323
/// 构建 v0 和 p1 客户端。
2424
/// </summary>
2525
/// <param name="authProvider">可以使用 <see cref="BangumiAuthenticationProvider"/>,也可以自己实现。</param>
2626
/// <param name="httpClient">想要复用的 <see cref="HttpClient"/>。</param>
27+
/// <param name="devEnvironment">是否使用开发环境。</param>
2728
/// <returns></returns>
28-
public static Clients Build(IAuthenticationProvider authProvider, HttpClient httpClient)
29+
public static Clients Build(IAuthenticationProvider authProvider, HttpClient httpClient, bool devEnvironment = false)
2930
{
3031
var requestAdapter0 = new HttpClientRequestAdapter(authProvider, httpClient: httpClient);
3132
var requestAdapter1 = new HttpClientRequestAdapter(authProvider, httpClient: httpClient);
32-
var p1Client = new P1.ApiClient(requestAdapter1);
33+
34+
if (devEnvironment)
35+
{
36+
requestAdapter0.BaseUrl = V0.ApiClient.BaseUrlDev;
37+
requestAdapter1.BaseUrl = P1.ApiClient.BaseUrlDev;
38+
}
39+
3340
var v0Client = new V0.ApiClient(requestAdapter0);
41+
var p1Client = new P1.ApiClient(requestAdapter1);
3442

3543
return new()
3644
{
3745
HttpClient = httpClient,
3846
RequestAdapter0 = requestAdapter0,
3947
RequestAdapter1 = requestAdapter1,
40-
P1Client = p1Client,
4148
V0Client = v0Client,
49+
P1Client = p1Client,
4250
};
4351
}
4452
}
@@ -48,6 +56,6 @@ public class Clients
4856
public required HttpClient HttpClient { get; set; }
4957
public required IRequestAdapter RequestAdapter0 { get; set; }
5058
public required IRequestAdapter RequestAdapter1 { get; set; }
51-
public required P1.ApiClient P1Client { get; set; }
5259
public required V0.ApiClient V0Client { get; set; }
60+
public required P1.ApiClient P1Client { get; set; }
5361
}

BangumiNet.Api/Extensions/ClientExtensions.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,12 @@ public partial class ApiClient : IApiClient
1010
public const string DefinitionUrl = "https://next.bgm.tv/p1/openapi.yaml";
1111
/// <summary>生成本 API 客户端的命令</summary>
1212
public const string KiotaCommand = $@"kiota generate -d {DefinitionUrl} -l csharp -n BangumiNet.Api.P1 -o .\P1 --co --ebc";
13+
14+
public const string BaseUrl = "https://next.bgm.tv";
15+
public const string BaseUrlDev = "https://next.bgm38.tv";
1316
}
1417
}
18+
1519
namespace BangumiNet.Api.V0
1620
{
1721
public partial class ApiClient : IApiClient
@@ -22,8 +26,12 @@ public partial class ApiClient : IApiClient
2226
public const string DefinitionUrl = "https://github.com/bangumi/api/raw/refs/heads/master/open-api/v0.yaml";
2327
/// <summary>生成本 API 客户端的命令</summary>
2428
public const string KiotaCommand = $@"kiota generate -d {DefinitionUrl} -l csharp -n BangumiNet.Api.V0 -o .\V0 --co --ebc";
29+
30+
public const string BaseUrl = "https://api.bgm.tv";
31+
public const string BaseUrlDev = "https://api.bgm38.tv";
2532
}
2633
}
34+
2735
namespace BangumiNet.Api.Legacy
2836
{
2937
[Obsolete]
@@ -35,5 +43,7 @@ public partial class ApiClient : IApiClient
3543
public const string DefinitionUrl = "https://github.com/bangumi/api/raw/9b4e4267c008218b51c275d640fab292637ca7ae/open-api/api.yml";
3644
/// <summary>生成本 API 客户端的命令</summary>
3745
public const string KiotaCommand = $@"kiota generate -d {DefinitionUrl} -l csharp -n BangumiNet.Api.Legacy -o .\Legacy --co --ebc";
46+
47+
public const string BaseUrl = "https://api.bgm.tv";
3848
}
3949
}

BangumiNet.Api/IApiSettings.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ public interface IApiSettings
44
{
55
string UserAgent { get; }
66
string? AuthToken { get; }
7+
bool DevEnvironment { get; }
78
}

BangumiNet.Api/Legacy/ApiClient.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public partial class ApiClient : BaseRequestBuilder
4141
ApiClientBuilder.RegisterDefaultDeserializer<FormParseNodeFactory>();
4242
if (string.IsNullOrEmpty(RequestAdapter.BaseUrl))
4343
{
44-
RequestAdapter.BaseUrl = "https://api.bgm.tv";
44+
RequestAdapter.BaseUrl = BaseUrl;
4545
}
4646
PathParameters.TryAdd("baseurl", RequestAdapter.BaseUrl);
4747
}

BangumiNet.Api/P1/ApiClient.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public partial class ApiClient : BaseRequestBuilder
4141
ApiClientBuilder.RegisterDefaultDeserializer<FormParseNodeFactory>();
4242
if (string.IsNullOrEmpty(RequestAdapter.BaseUrl))
4343
{
44-
RequestAdapter.BaseUrl = "https://next.bgm.tv";
44+
RequestAdapter.BaseUrl = BaseUrl;
4545
}
4646
PathParameters.TryAdd("baseurl", RequestAdapter.BaseUrl);
4747
}

BangumiNet.Api/V0/ApiClient.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public partial class ApiClient : BaseRequestBuilder
4141
ApiClientBuilder.RegisterDefaultDeserializer<FormParseNodeFactory>();
4242
if (string.IsNullOrEmpty(RequestAdapter.BaseUrl))
4343
{
44-
RequestAdapter.BaseUrl = "https://api.bgm.tv";
44+
RequestAdapter.BaseUrl = BaseUrl;
4545
}
4646
PathParameters.TryAdd("baseurl", RequestAdapter.BaseUrl);
4747
}

BangumiNet.Shared/Settings.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ public record class Settings : IApiSettings
88
{
99
public string UserAgent { get; init; } = $"ajtn123/{Constants.ApplicationName}/{Assembly.GetExecutingAssembly().GetName().Version} ({Environment.OSVersion.Platform}) ({Constants.SourceRepository})";
1010
public string? AuthToken { get; init; } = null;
11+
public bool DevEnvironment { get; init; } = false;
1112

1213
public string BangumiTvUrlBase { get; init; } = "https://bgm.tv";
1314
public Dictionary<string, string> SearchQueryUrlBases { get; init; } = new()

0 commit comments

Comments
 (0)