Skip to content

Commit 1118da3

Browse files
committed
Add UserAgent for all chats httpclient usage
1 parent eb3bfab commit 1118da3

3 files changed

Lines changed: 19 additions & 21 deletions

File tree

src/BE/Controllers/Admin/GlobalConfigs/GitHubReleaseChecker.cs

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,15 @@
33

44
namespace Chats.BE.Controllers.Admin.GlobalConfigs;
55

6-
public class GitHubReleaseChecker
6+
public class GitHubReleaseChecker(IHttpClientFactory httpClientFactory)
77
{
8-
private readonly HttpClient _httpClient;
9-
private readonly string _owner;
10-
private readonly string _repo;
11-
12-
public static GitHubReleaseChecker SdcbChats => new("sdcb", "chats");
13-
14-
public GitHubReleaseChecker(string owner, string repo)
15-
{
16-
_owner = owner;
17-
_repo = repo;
18-
19-
_httpClient = new HttpClient { BaseAddress = new Uri("https://api.github.com") };
20-
_httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("SdcbChatsVersionChecker", "1.0"));
21-
_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/vnd.github.v3+json"));
22-
}
23-
248
public async Task<string> GetLatestReleaseTagNameAsync(CancellationToken cancellationToken)
259
{
26-
HttpResponseMessage response = await _httpClient.GetAsync($"/repos/{_owner}/{_repo}/releases/latest", cancellationToken);
10+
using HttpClient httpClient = httpClientFactory.CreateClient();
11+
httpClient.BaseAddress = new Uri("https://api.github.com");
12+
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/vnd.github.v3+json"));
13+
14+
HttpResponseMessage response = await httpClient.GetAsync($"/repos/sdcb/chats/releases/latest", cancellationToken);
2715
response.EnsureSuccessStatusCode(); // 如果请求失败,抛出异常
2816

2917
using Stream responseStream = await response.Content.ReadAsStreamAsync(cancellationToken);

src/BE/Controllers/Admin/GlobalConfigs/VersionController.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ public ActionResult<string> GetCurrentVersion()
2020

2121
[HttpPost("check-update")]
2222
public async Task<ActionResult<CheckUpdateResponse>> CheckUpdate(
23-
[FromServices] ILogger<VersionController> logger,
23+
[FromServices] GitHubReleaseChecker gitHubReleaseChecker,
2424
CancellationToken cancellationToken)
2525
{
2626
string? tagName = null;
2727
try
2828
{
29-
tagName = await GitHubReleaseChecker.SdcbChats.GetLatestReleaseTagNameAsync(cancellationToken);
29+
tagName = await gitHubReleaseChecker.GetLatestReleaseTagNameAsync(cancellationToken);
3030
}
3131
catch (Exception e)
3232
{

src/BE/Program.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,23 @@
1010
using Chats.BE.Services.Security;
1111
using Microsoft.AspNetCore.Authentication;
1212
using Microsoft.AspNetCore.Mvc;
13+
using System.Reflection;
1314
using System.Runtime.CompilerServices;
1415
using Chats.BE.Services.FileServices;
1516
using Microsoft.AspNetCore.StaticFiles;
1617
using Chats.BE.Services.Models.ChatServices;
18+
using Chats.BE.Controllers.Admin.GlobalConfigs;
1719

1820
[assembly: InternalsVisibleTo("Chats.BE.Tests")]
1921

2022
namespace Chats.BE;
2123

2224
public class Program
2325
{
26+
private static string? CurrentVersion => typeof(Program).Assembly
27+
.GetCustomAttribute<AssemblyFileVersionAttribute>()?
28+
.Version;
29+
2430
public static async Task Main(string[] args)
2531
{
2632
WebApplicationBuilder builder = WebApplication.CreateBuilder(args);
@@ -38,7 +44,10 @@ public static async Task Main(string[] args)
3844
builder.Services.AddEndpointsApiExplorer();
3945
builder.Services.AddSwaggerGen();
4046
builder.Services.AddDbContext<ChatsDB>(o => o.Configure(builder.Configuration, builder.Environment));
41-
builder.Services.AddHttpClient();
47+
builder.Services.AddHttpClient(string.Empty, httpClient =>
48+
{
49+
httpClient.DefaultRequestHeaders.UserAgent.ParseAdd($"Sdcb-Chats/{CurrentVersion}");
50+
});
4251
builder.Services.AddSingleton<InitService>();
4352
builder.Services.AddSingleton<AppConfigService>();
4453
builder.Services.AddSingleton<CsrfTokenService>();
@@ -77,6 +86,7 @@ public static async Task Main(string[] args)
7786
builder.Services.AddSingleton<FileImageInfoService>();
7887
builder.Services.AddSingleton<AsyncClientInfoManager>();
7988
builder.Services.AddSingleton<AsyncCacheUsageManager>();
89+
builder.Services.AddSingleton<GitHubReleaseChecker>();
8090

8191
builder.Services.AddScoped<CurrentUser>();
8292
builder.Services.AddScoped<CurrentApiKey>();

0 commit comments

Comments
 (0)