mirror of
https://github.com/SoPat712/allstarr.git
synced 2026-04-27 12:02:51 -04:00
v1.4.1: MAJOR FIX - Moved from Redis to Valkey, added migration service to support, Utilizing Hi-Fi API 2.7 with ISRC search, preserve local item json objects, add a quality fallback, added "transcoding" support that just reduces the fetched quality, while still downloading at the quality set in the .env, introduced real-time download visualizer on web-ui (not complete), move some stuff from json to redis, better retry logic, configurable timeouts per provider
This commit is contained in:
@@ -58,55 +58,7 @@ public class SquidWTFDownloadServiceTests : IDisposable
|
||||
Assert.Equal(["HI_RES_LOSSLESS", "LOSSLESS", "HIGH", "LOW"], order);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetTrackDownloadInfoAsync_FallsBackToLowerQualityWhenPreferredQualityIsUnavailable()
|
||||
{
|
||||
var requests = new List<string>();
|
||||
using var handler = new StubHttpMessageHandler(request =>
|
||||
{
|
||||
var url = request.RequestUri!.ToString();
|
||||
requests.Add(url);
|
||||
|
||||
if (url.Contains("quality=LOSSLESS", StringComparison.Ordinal))
|
||||
{
|
||||
return new HttpResponseMessage(HttpStatusCode.Forbidden);
|
||||
}
|
||||
|
||||
if (url.Contains("quality=HIGH", StringComparison.Ordinal) &&
|
||||
url.StartsWith("http://127.0.0.1:18082/", StringComparison.Ordinal))
|
||||
{
|
||||
return new HttpResponseMessage(HttpStatusCode.Forbidden);
|
||||
}
|
||||
|
||||
if (url.Contains("quality=HIGH", StringComparison.Ordinal))
|
||||
{
|
||||
return new HttpResponseMessage(HttpStatusCode.OK)
|
||||
{
|
||||
Content = new StringContent(CreateTrackResponseJson("HIGH", "audio/mp4", "https://cdn.example.com/334284374.m4a"))
|
||||
};
|
||||
}
|
||||
|
||||
return new HttpResponseMessage(HttpStatusCode.NotFound);
|
||||
});
|
||||
|
||||
var service = CreateService(handler, quality: "FLAC");
|
||||
|
||||
var result = await InvokePrivateAsync(service, "GetTrackDownloadInfoAsync", "334284374", CancellationToken.None);
|
||||
|
||||
Assert.Equal("http://127.0.0.1:18081", GetProperty<string>(result, "Endpoint"));
|
||||
Assert.Equal("https://cdn.example.com/334284374.m4a", GetProperty<string>(result, "DownloadUrl"));
|
||||
Assert.Equal("audio/mp4", GetProperty<string>(result, "MimeType"));
|
||||
Assert.Equal("HIGH", GetProperty<string>(result, "AudioQuality"));
|
||||
|
||||
Assert.Contains(requests, url => url.Contains("quality=LOSSLESS", StringComparison.Ordinal));
|
||||
Assert.Contains(requests, url => url.Contains("quality=HIGH", StringComparison.Ordinal));
|
||||
|
||||
var lastLosslessRequest = requests.FindLastIndex(url => url.Contains("quality=LOSSLESS", StringComparison.Ordinal));
|
||||
var firstHighRequest = requests.FindIndex(url => url.Contains("quality=HIGH", StringComparison.Ordinal));
|
||||
|
||||
Assert.True(lastLosslessRequest >= 0);
|
||||
Assert.True(firstHighRequest > lastLosslessRequest);
|
||||
}
|
||||
|
||||
private SquidWTFDownloadService CreateService(HttpMessageHandler handler, string quality)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user