diff --git a/allstarr.Tests/DeezerDownloadServiceTests.cs b/allstarr.Tests/DeezerDownloadServiceTests.cs index f0fa1a2..dc2458a 100644 --- a/allstarr.Tests/DeezerDownloadServiceTests.cs +++ b/allstarr.Tests/DeezerDownloadServiceTests.cs @@ -85,7 +85,7 @@ public class DeezerDownloadServiceTests : IDisposable var serviceProviderMock = new Mock(); serviceProviderMock.Setup(sp => sp.GetService(typeof(allstarr.Services.Subsonic.PlaylistSyncService))) - .Returns(null); + .Returns(null!); return new DeezerDownloadService( _httpClientFactoryMock.Object, diff --git a/allstarr.Tests/JellyfinProxyServiceTests.cs b/allstarr.Tests/JellyfinProxyServiceTests.cs index afd723d..6d268db 100644 --- a/allstarr.Tests/JellyfinProxyServiceTests.cs +++ b/allstarr.Tests/JellyfinProxyServiceTests.cs @@ -107,8 +107,8 @@ public class JellyfinProxyServiceTests Assert.True(captured!.Headers.Contains("Authorization")); var authHeader = captured.Headers.GetValues("Authorization").First(); Assert.Contains("MediaBrowser", authHeader); - Assert.Contains(_settings.ApiKey, authHeader); - Assert.Contains(_settings.ClientName, authHeader); + Assert.Contains(_settings.ApiKey!, authHeader); + Assert.Contains(_settings.ClientName!, authHeader); } [Fact] diff --git a/allstarr.Tests/QobuzDownloadServiceTests.cs b/allstarr.Tests/QobuzDownloadServiceTests.cs index 14f91c0..f20bc7a 100644 --- a/allstarr.Tests/QobuzDownloadServiceTests.cs +++ b/allstarr.Tests/QobuzDownloadServiceTests.cs @@ -88,7 +88,7 @@ public class QobuzDownloadServiceTests : IDisposable var serviceProviderMock = new Mock(); serviceProviderMock.Setup(sp => sp.GetService(typeof(allstarr.Services.Subsonic.PlaylistSyncService))) - .Returns(null); + .Returns(null!); return new QobuzDownloadService( _httpClientFactoryMock.Object, diff --git a/allstarr/Services/Jellyfin/JellyfinStartupValidator.cs b/allstarr/Services/Jellyfin/JellyfinStartupValidator.cs index c4977e8..8dd9923 100644 --- a/allstarr/Services/Jellyfin/JellyfinStartupValidator.cs +++ b/allstarr/Services/Jellyfin/JellyfinStartupValidator.cs @@ -140,7 +140,7 @@ public class JellyfinStartupValidator : BaseStartupValidator $"Token=\"{settings.ApiKey}\""; using var request = new HttpRequestMessage(HttpMethod.Get, - $"{settings.Url.TrimEnd('/')}/System/Info"); + $"{settings.Url?.TrimEnd('/')}/System/Info"); request.Headers.Add("Authorization", authHeader); var response = await _httpClient.SendAsync(request, cancellationToken); @@ -180,7 +180,7 @@ public class JellyfinStartupValidator : BaseStartupValidator { try { - var url = $"{settings.Url.TrimEnd('/')}/Library/MediaFolders"; + var url = $"{settings.Url?.TrimEnd('/')}/Library/MediaFolders"; if (!string.IsNullOrWhiteSpace(settings.UserId)) { url += $"?userId={settings.UserId}"; diff --git a/allstarr/Services/SquidWTF/SquidWTFMetadataService.cs b/allstarr/Services/SquidWTF/SquidWTFMetadataService.cs index 506e5a7..a897665 100644 --- a/allstarr/Services/SquidWTF/SquidWTFMetadataService.cs +++ b/allstarr/Services/SquidWTF/SquidWTFMetadataService.cs @@ -481,11 +481,11 @@ public class SquidWTFMetadataService : IMusicMetadataService var songs = new List(); // Get playlist name for album field - var playlistName = playlist.Value.TryGetProperty("title", out var titleEl) + var playlistName = playlist?.TryGetProperty("title", out var titleEl) == true ? titleEl.GetString() ?? "Unknown Playlist" : "Unknown Playlist"; - if (tracks != null) + if (tracks.HasValue) { int trackIndex = 1; foreach (var entry in tracks.Value.EnumerateArray()) @@ -785,6 +785,11 @@ public class SquidWTFMetadataService : IMusicMetadataService tracks = tracksEl; } + if (!playlist.HasValue) + { + throw new InvalidOperationException("Playlist data is missing"); + } + var externalId = playlist.Value.GetProperty("uuid").GetString()!; // Get curator/creator name