Release 0.2.5: harden proxy and streamline metadata fetching
Remove obsolete rule formats, batch SQLite work, preserve artwork source URLs, and coordinate refresh workers with maintenance. Add regression coverage and document backup format changes.
This commit is contained in:
@@ -60,8 +60,7 @@ public sealed class ItemsProxyPrecacheService
|
||||
{
|
||||
try
|
||||
{
|
||||
var port = _configurationManager.GetNetworkConfiguration().InternalHttpPort;
|
||||
var baseUri = new Uri(_applicationHost.GetLocalApiUrl("127.0.0.1", "http", port).TrimEnd('/') + "/");
|
||||
var baseUri = LocalApiUri;
|
||||
var views = await GetJsonAsync(new Uri(baseUri, $"Users/{userId}/Views"), token).ConfigureAwait(false);
|
||||
var items = views["Items"]?.AsArray() ?? [];
|
||||
var targets = items
|
||||
@@ -86,7 +85,7 @@ public sealed class ItemsProxyPrecacheService
|
||||
|
||||
using var request = new HttpRequestMessage(HttpMethod.Get, new Uri(baseUri, endpoint));
|
||||
AddTokenHeaders(request, token);
|
||||
using var response = await _httpClientFactory.CreateClient().SendAsync(request, CancellationToken.None).ConfigureAwait(false);
|
||||
using var response = await _httpClientFactory.CreateClient("Multilang.Jellyfin").SendAsync(request, CancellationToken.None).ConfigureAwait(false);
|
||||
if (!response.IsSuccessStatusCode)
|
||||
_logger.LogWarning("Multilang pre-cache failed user={UserId} library={LibraryId} status={StatusCode}", userId, target.Id, (int)response.StatusCode);
|
||||
}
|
||||
@@ -106,7 +105,7 @@ public sealed class ItemsProxyPrecacheService
|
||||
{
|
||||
using var request = new HttpRequestMessage(HttpMethod.Get, uri);
|
||||
AddTokenHeaders(request, token);
|
||||
using var response = await _httpClientFactory.CreateClient().SendAsync(request, CancellationToken.None).ConfigureAwait(false);
|
||||
using var response = await _httpClientFactory.CreateClient("Multilang.Jellyfin").SendAsync(request, CancellationToken.None).ConfigureAwait(false);
|
||||
response.EnsureSuccessStatusCode();
|
||||
var body = await response.Content.ReadAsStringAsync(CancellationToken.None).ConfigureAwait(false);
|
||||
return JsonNode.Parse(body)?.AsObject() ?? throw new InvalidOperationException("Jellyfin views response was not a JSON object.");
|
||||
@@ -118,4 +117,7 @@ public sealed class ItemsProxyPrecacheService
|
||||
request.Headers.TryAddWithoutValidation("X-Emby-Token", token);
|
||||
request.Headers.TryAddWithoutValidation("X-MediaBrowser-Token", token);
|
||||
}
|
||||
|
||||
public Uri LocalApiUri => new(_applicationHost.GetLocalApiUrl("127.0.0.1", "http",
|
||||
_configurationManager.GetNetworkConfiguration().InternalHttpPort).TrimEnd('/') + "/");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user