mirror of
https://github.com/SoPat712/allstarr.git
synced 2026-02-09 15:45:10 -05:00
Fix nullable warnings and update CI/CD for beta branch
This commit is contained in:
7
.github/workflows/docker.yml
vendored
7
.github/workflows/docker.yml
vendored
@@ -4,10 +4,10 @@ on:
|
|||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
push:
|
push:
|
||||||
tags: ["v*"]
|
tags: ["v*"]
|
||||||
branches: [main, dev]
|
branches: [main, beta]
|
||||||
pull_request:
|
pull_request:
|
||||||
types: [closed]
|
types: [closed]
|
||||||
branches: [main, dev]
|
branches: [main, beta]
|
||||||
|
|
||||||
env:
|
env:
|
||||||
DOTNET_VERSION: "10.0.x"
|
DOTNET_VERSION: "10.0.x"
|
||||||
@@ -77,7 +77,8 @@ jobs:
|
|||||||
type=semver,pattern={{version}}
|
type=semver,pattern={{version}}
|
||||||
type=semver,pattern={{major}}.{{minor}}
|
type=semver,pattern={{major}}.{{minor}}
|
||||||
type=semver,pattern={{major}}
|
type=semver,pattern={{major}}
|
||||||
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/dev' || github.event_name == 'workflow_dispatch' }}
|
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}
|
||||||
|
type=raw,value=beta,enable=${{ github.ref == 'refs/heads/beta' }}
|
||||||
|
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ public class DeezerDownloadServiceTests : IDisposable
|
|||||||
|
|
||||||
var serviceProviderMock = new Mock<IServiceProvider>();
|
var serviceProviderMock = new Mock<IServiceProvider>();
|
||||||
serviceProviderMock.Setup(sp => sp.GetService(typeof(allstarr.Services.Subsonic.PlaylistSyncService)))
|
serviceProviderMock.Setup(sp => sp.GetService(typeof(allstarr.Services.Subsonic.PlaylistSyncService)))
|
||||||
.Returns(null);
|
.Returns(null!);
|
||||||
|
|
||||||
return new DeezerDownloadService(
|
return new DeezerDownloadService(
|
||||||
_httpClientFactoryMock.Object,
|
_httpClientFactoryMock.Object,
|
||||||
|
|||||||
@@ -107,8 +107,8 @@ public class JellyfinProxyServiceTests
|
|||||||
Assert.True(captured!.Headers.Contains("Authorization"));
|
Assert.True(captured!.Headers.Contains("Authorization"));
|
||||||
var authHeader = captured.Headers.GetValues("Authorization").First();
|
var authHeader = captured.Headers.GetValues("Authorization").First();
|
||||||
Assert.Contains("MediaBrowser", authHeader);
|
Assert.Contains("MediaBrowser", authHeader);
|
||||||
Assert.Contains(_settings.ApiKey, authHeader);
|
Assert.Contains(_settings.ApiKey!, authHeader);
|
||||||
Assert.Contains(_settings.ClientName, authHeader);
|
Assert.Contains(_settings.ClientName!, authHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ public class QobuzDownloadServiceTests : IDisposable
|
|||||||
|
|
||||||
var serviceProviderMock = new Mock<IServiceProvider>();
|
var serviceProviderMock = new Mock<IServiceProvider>();
|
||||||
serviceProviderMock.Setup(sp => sp.GetService(typeof(allstarr.Services.Subsonic.PlaylistSyncService)))
|
serviceProviderMock.Setup(sp => sp.GetService(typeof(allstarr.Services.Subsonic.PlaylistSyncService)))
|
||||||
.Returns(null);
|
.Returns(null!);
|
||||||
|
|
||||||
return new QobuzDownloadService(
|
return new QobuzDownloadService(
|
||||||
_httpClientFactoryMock.Object,
|
_httpClientFactoryMock.Object,
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ public class JellyfinStartupValidator : BaseStartupValidator
|
|||||||
$"Token=\"{settings.ApiKey}\"";
|
$"Token=\"{settings.ApiKey}\"";
|
||||||
|
|
||||||
using var request = new HttpRequestMessage(HttpMethod.Get,
|
using var request = new HttpRequestMessage(HttpMethod.Get,
|
||||||
$"{settings.Url.TrimEnd('/')}/System/Info");
|
$"{settings.Url?.TrimEnd('/')}/System/Info");
|
||||||
request.Headers.Add("Authorization", authHeader);
|
request.Headers.Add("Authorization", authHeader);
|
||||||
|
|
||||||
var response = await _httpClient.SendAsync(request, cancellationToken);
|
var response = await _httpClient.SendAsync(request, cancellationToken);
|
||||||
@@ -180,7 +180,7 @@ public class JellyfinStartupValidator : BaseStartupValidator
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var url = $"{settings.Url.TrimEnd('/')}/Library/MediaFolders";
|
var url = $"{settings.Url?.TrimEnd('/')}/Library/MediaFolders";
|
||||||
if (!string.IsNullOrWhiteSpace(settings.UserId))
|
if (!string.IsNullOrWhiteSpace(settings.UserId))
|
||||||
{
|
{
|
||||||
url += $"?userId={settings.UserId}";
|
url += $"?userId={settings.UserId}";
|
||||||
|
|||||||
@@ -481,11 +481,11 @@ public class SquidWTFMetadataService : IMusicMetadataService
|
|||||||
var songs = new List<Song>();
|
var songs = new List<Song>();
|
||||||
|
|
||||||
// Get playlist name for album field
|
// 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"
|
? titleEl.GetString() ?? "Unknown Playlist"
|
||||||
: "Unknown Playlist";
|
: "Unknown Playlist";
|
||||||
|
|
||||||
if (tracks != null)
|
if (tracks.HasValue)
|
||||||
{
|
{
|
||||||
int trackIndex = 1;
|
int trackIndex = 1;
|
||||||
foreach (var entry in tracks.Value.EnumerateArray())
|
foreach (var entry in tracks.Value.EnumerateArray())
|
||||||
@@ -785,6 +785,11 @@ public class SquidWTFMetadataService : IMusicMetadataService
|
|||||||
tracks = tracksEl;
|
tracks = tracksEl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!playlist.HasValue)
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException("Playlist data is missing");
|
||||||
|
}
|
||||||
|
|
||||||
var externalId = playlist.Value.GetProperty("uuid").GetString()!;
|
var externalId = playlist.Value.GetProperty("uuid").GetString()!;
|
||||||
|
|
||||||
// Get curator/creator name
|
// Get curator/creator name
|
||||||
|
|||||||
Reference in New Issue
Block a user