diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index bcb1c08f9..3755c8fc3 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -15,7 +15,7 @@ variables:
buildName: '$(Build.SourceBranchName).$(prowlarrVersion)'
sentryOrg: 'servarr'
sentryUrl: 'https://sentry.servarr.com'
- dotnetVersion: '6.0.424'
+ dotnetVersion: '8.0.303'
nodeVersion: '20.X'
innoVersion: '6.2.2'
windowsImage: 'windows-2022'
@@ -122,27 +122,27 @@ stages:
artifact: '$(osName)Backend'
displayName: Publish Backend
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
- - publish: '$(testsFolder)/net6.0/win-x64/publish'
+ - publish: '$(testsFolder)/net8.0/win-x64/publish'
artifact: win-x64-tests
displayName: Publish win-x64 Test Package
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
- - publish: '$(testsFolder)/net6.0/linux-x64/publish'
+ - publish: '$(testsFolder)/net8.0/linux-x64/publish'
artifact: linux-x64-tests
displayName: Publish linux-x64 Test Package
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
- - publish: '$(testsFolder)/net6.0/linux-x86/publish'
+ - publish: '$(testsFolder)/net8.0/linux-x86/publish'
artifact: linux-x86-tests
displayName: Publish linux-x86 Test Package
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
- - publish: '$(testsFolder)/net6.0/linux-musl-x64/publish'
+ - publish: '$(testsFolder)/net8.0/linux-musl-x64/publish'
artifact: linux-musl-x64-tests
displayName: Publish linux-musl-x64 Test Package
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
- - publish: '$(testsFolder)/net6.0/freebsd-x64/publish'
+ - publish: '$(testsFolder)/net8.0/freebsd-x64/publish'
artifact: freebsd-x64-tests
displayName: Publish freebsd-x64 Test Package
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
- - publish: '$(testsFolder)/net6.0/osx-x64/publish'
+ - publish: '$(testsFolder)/net8.0/osx-x64/publish'
artifact: osx-x64-tests
displayName: Publish osx-x64 Test Package
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
@@ -189,7 +189,7 @@ stages:
artifact: '$(osName)Frontend'
displayName: Publish Frontend
condition: and(succeeded(), eq(variables['osName'], 'Windows'))
-
+
- stage: Installer
dependsOn:
- Build_Backend
@@ -259,21 +259,21 @@ stages:
archiveFile: '$(Build.ArtifactStagingDirectory)/Prowlarr.$(buildName).windows-core-x64.zip'
archiveType: 'zip'
includeRootFolder: false
- rootFolderOrFile: $(artifactsFolder)/win-x64/net6.0
+ rootFolderOrFile: $(artifactsFolder)/win-x64/net8.0
- task: ArchiveFiles@2
displayName: Create win-x86 zip
inputs:
archiveFile: '$(Build.ArtifactStagingDirectory)/Prowlarr.$(buildName).windows-core-x86.zip'
archiveType: 'zip'
includeRootFolder: false
- rootFolderOrFile: $(artifactsFolder)/win-x86/net6.0
+ rootFolderOrFile: $(artifactsFolder)/win-x86/net8.0
- task: ArchiveFiles@2
displayName: Create osx-x64 app
inputs:
archiveFile: '$(Build.ArtifactStagingDirectory)/Prowlarr.$(buildName).osx-app-core-x64.zip'
archiveType: 'zip'
includeRootFolder: false
- rootFolderOrFile: $(artifactsFolder)/osx-x64-app/net6.0
+ rootFolderOrFile: $(artifactsFolder)/osx-x64-app/net8.0
- task: ArchiveFiles@2
displayName: Create osx-x64 tar
inputs:
@@ -281,14 +281,14 @@ stages:
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
- rootFolderOrFile: $(artifactsFolder)/osx-x64/net6.0
+ rootFolderOrFile: $(artifactsFolder)/osx-x64/net8.0
- task: ArchiveFiles@2
displayName: Create osx-arm64 app
inputs:
archiveFile: '$(Build.ArtifactStagingDirectory)/Prowlarr.$(buildName).osx-app-core-arm64.zip'
archiveType: 'zip'
includeRootFolder: false
- rootFolderOrFile: $(artifactsFolder)/osx-arm64-app/net6.0
+ rootFolderOrFile: $(artifactsFolder)/osx-arm64-app/net8.0
- task: ArchiveFiles@2
displayName: Create osx-arm64 tar
inputs:
@@ -296,7 +296,7 @@ stages:
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
- rootFolderOrFile: $(artifactsFolder)/osx-arm64/net6.0
+ rootFolderOrFile: $(artifactsFolder)/osx-arm64/net8.0
- task: ArchiveFiles@2
displayName: Create linux-x64 tar
inputs:
@@ -304,7 +304,7 @@ stages:
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
- rootFolderOrFile: $(artifactsFolder)/linux-x64/net6.0
+ rootFolderOrFile: $(artifactsFolder)/linux-x64/net8.0
- task: ArchiveFiles@2
displayName: Create linux-musl-x64 tar
inputs:
@@ -312,7 +312,7 @@ stages:
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
- rootFolderOrFile: $(artifactsFolder)/linux-musl-x64/net6.0
+ rootFolderOrFile: $(artifactsFolder)/linux-musl-x64/net8.0
- task: ArchiveFiles@2
displayName: Create linux-x86 tar
inputs:
@@ -320,7 +320,7 @@ stages:
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
- rootFolderOrFile: $(artifactsFolder)/linux-x86/net6.0
+ rootFolderOrFile: $(artifactsFolder)/linux-x86/net8.0
- task: ArchiveFiles@2
displayName: Create linux-arm tar
inputs:
@@ -328,7 +328,7 @@ stages:
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
- rootFolderOrFile: $(artifactsFolder)/linux-arm/net6.0
+ rootFolderOrFile: $(artifactsFolder)/linux-arm/net8.0
- task: ArchiveFiles@2
displayName: Create linux-musl-arm tar
inputs:
@@ -336,7 +336,7 @@ stages:
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
- rootFolderOrFile: $(artifactsFolder)/linux-musl-arm/net6.0
+ rootFolderOrFile: $(artifactsFolder)/linux-musl-arm/net8.0
- task: ArchiveFiles@2
displayName: Create linux-arm64 tar
inputs:
@@ -344,7 +344,7 @@ stages:
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
- rootFolderOrFile: $(artifactsFolder)/linux-arm64/net6.0
+ rootFolderOrFile: $(artifactsFolder)/linux-arm64/net8.0
- task: ArchiveFiles@2
displayName: Create linux-musl-arm64 tar
inputs:
@@ -352,7 +352,7 @@ stages:
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
- rootFolderOrFile: $(artifactsFolder)/linux-musl-arm64/net6.0
+ rootFolderOrFile: $(artifactsFolder)/linux-musl-arm64/net8.0
- task: ArchiveFiles@2
displayName: Create freebsd-x64 tar
inputs:
@@ -360,7 +360,7 @@ stages:
archiveType: 'tar'
tarCompression: 'gz'
includeRootFolder: false
- rootFolderOrFile: $(artifactsFolder)/freebsd-x64/net6.0
+ rootFolderOrFile: $(artifactsFolder)/freebsd-x64/net8.0
- publish: $(Build.ArtifactStagingDirectory)
artifact: 'Packages'
displayName: Publish Packages
@@ -391,7 +391,7 @@ stages:
SENTRY_AUTH_TOKEN: $(sentryAuthTokenServarr)
SENTRY_ORG: $(sentryOrg)
SENTRY_URL: $(sentryUrl)
-
+
- stage: Unit_Test
displayName: Unit Tests
dependsOn: Build_Backend
@@ -494,11 +494,11 @@ stages:
pool:
vmImage: ${{ variables.linuxImage }}
-
+
container: $[ variables['containerImage'] ]
timeoutInMinutes: 10
-
+
steps:
- task: UseDotNet@2
displayName: 'Install .NET'
@@ -532,7 +532,7 @@ stages:
testResultsFiles: '**/TestResult.xml'
testRunTitle: '$(testName) Unit Tests'
failTaskOnFailedTests: true
-
+
- job: Unit_LinuxCore_Postgres14
displayName: Unit Native LinuxCore with Postgres14 Database
dependsOn: Prepare
@@ -549,7 +549,7 @@ stages:
vmImage: ${{ variables.linuxImage }}
timeoutInMinutes: 10
-
+
steps:
- task: UseDotNet@2
displayName: 'Install .net core'
@@ -597,12 +597,12 @@ stages:
Prowlarr__Postgres__Port: '5432'
Prowlarr__Postgres__User: 'prowlarr'
Prowlarr__Postgres__Password: 'prowlarr'
-
+
pool:
vmImage: ${{ variables.linuxImage }}
timeoutInMinutes: 10
-
+
steps:
- task: UseDotNet@2
displayName: 'Install .net core'
@@ -681,7 +681,7 @@ stages:
pool:
vmImage: $(imageName)
-
+
steps:
- task: UseDotNet@2
displayName: 'Install .net core'
@@ -703,7 +703,7 @@ stages:
targetPath: $(Build.ArtifactStagingDirectory)
- task: ExtractFiles@1
inputs:
- archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
+ archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
destinationFolder: '$(Build.ArtifactStagingDirectory)/bin'
displayName: Extract Package
- bash: |
@@ -757,7 +757,7 @@ stages:
targetPath: $(Build.ArtifactStagingDirectory)
- task: ExtractFiles@1
inputs:
- archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
+ archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
destinationFolder: '$(Build.ArtifactStagingDirectory)/bin'
displayName: Extract Package
- bash: |
@@ -820,7 +820,7 @@ stages:
targetPath: $(Build.ArtifactStagingDirectory)
- task: ExtractFiles@1
inputs:
- archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
+ archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
destinationFolder: '$(Build.ArtifactStagingDirectory)/bin'
displayName: Extract Package
- bash: |
@@ -915,7 +915,7 @@ stages:
container: $[ variables['containerImage'] ]
timeoutInMinutes: 15
-
+
steps:
- task: UseDotNet@2
displayName: 'Install .NET'
@@ -943,7 +943,7 @@ stages:
targetPath: $(Build.ArtifactStagingDirectory)
- task: ExtractFiles@1
inputs:
- archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
+ archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
destinationFolder: '$(Build.ArtifactStagingDirectory)/bin'
displayName: Extract Package
- bash: |
@@ -965,7 +965,7 @@ stages:
- stage: Automation
displayName: Automation
dependsOn: Packages
-
+
jobs:
- job: Automation
strategy:
@@ -991,7 +991,7 @@ stages:
pool:
vmImage: $(imageName)
-
+
steps:
- task: UseDotNet@2
displayName: 'Install .net core'
@@ -1013,7 +1013,7 @@ stages:
targetPath: $(Build.ArtifactStagingDirectory)
- task: ExtractFiles@1
inputs:
- archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
+ archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
destinationFolder: '$(Build.ArtifactStagingDirectory)/bin'
displayName: Extract Package
- bash: |
@@ -1116,7 +1116,7 @@ stages:
- checkout: self
submodules: true
persistCredentials: true
- fetchDepth: 1
+ fetchDepth: 1
- bash: ./docs.sh Windows
displayName: Create openapi.json
- bash: |
@@ -1184,8 +1184,8 @@ stages:
sonar.cs.opencover.reportsPaths=$(Build.SourcesDirectory)/CoverageResults/**/coverage.opencover.xml
sonar.cs.nunit.reportsPaths=$(Build.SourcesDirectory)/TestResult.xml
- bash: |
- ./build.sh --backend -f net6.0 -r win-x64
- TEST_DIR=_tests/net6.0/win-x64/publish/ ./test.sh Windows Unit Coverage
+ ./build.sh --backend -f net8.0 -r win-x64
+ TEST_DIR=_tests/net8.0/win-x64/publish/ ./test.sh Windows Unit Coverage
displayName: Coverage Unit Tests
- task: SonarCloudAnalyze@2
condition: eq(variables['System.PullRequest.IsFork'], 'False')
@@ -1228,4 +1228,3 @@ stages:
DISCORDCHANNELID: $(discordChannelId)
DISCORDWEBHOOKKEY: $(discordWebhookKey)
DISCORDTHREADID: $(discordThreadId)
-
diff --git a/build.sh b/build.sh
index 5139dba52..b8f13c518 100755
--- a/build.sh
+++ b/build.sh
@@ -79,9 +79,9 @@ Build()
if [[ -z "$RID" || -z "$FRAMEWORK" ]];
then
- dotnet msbuild -restore $slnFile -p:Configuration=Release -p:Platform=$platform -t:PublishAllRids
+ dotnet msbuild -restore $slnFile -p:SelfContained=True -p:Configuration=Release -p:Platform=$platform -t:PublishAllRids
else
- dotnet msbuild -restore $slnFile -p:Configuration=Release -p:Platform=$platform -p:RuntimeIdentifiers=$RID -t:PublishAllRids
+ dotnet msbuild -restore $slnFile -p:SelfContained=True -p:Configuration=Release -p:Platform=$platform -p:RuntimeIdentifiers=$RID -t:PublishAllRids
fi
ProgressEnd 'Build'
@@ -137,7 +137,7 @@ PackageLinux()
echo "Adding Prowlarr.Mono to UpdatePackage"
cp $folder/Prowlarr.Mono.* $folder/Prowlarr.Update
- if [ "$framework" = "net6.0" ]; then
+ if [ "$framework" = "net8.0" ]; then
cp $folder/Mono.Posix.NETStandard.* $folder/Prowlarr.Update
cp $folder/libMonoPosixHelper.* $folder/Prowlarr.Update
fi
@@ -165,7 +165,7 @@ PackageMacOS()
echo "Adding Prowlarr.Mono to UpdatePackage"
cp $folder/Prowlarr.Mono.* $folder/Prowlarr.Update
- if [ "$framework" = "net6.0" ]; then
+ if [ "$framework" = "net8.0" ]; then
cp $folder/Mono.Posix.NETStandard.* $folder/Prowlarr.Update
cp $folder/libMonoPosixHelper.* $folder/Prowlarr.Update
fi
@@ -377,15 +377,15 @@ then
Build
if [[ -z "$RID" || -z "$FRAMEWORK" ]];
then
- PackageTests "net6.0" "win-x64"
- PackageTests "net6.0" "win-x86"
- PackageTests "net6.0" "linux-x64"
- PackageTests "net6.0" "linux-musl-x64"
- PackageTests "net6.0" "osx-x64"
+ PackageTests "net8.0" "win-x64"
+ PackageTests "net8.0" "win-x86"
+ PackageTests "net8.0" "linux-x64"
+ PackageTests "net8.0" "linux-musl-x64"
+ PackageTests "net8.0" "osx-x64"
if [ "$ENABLE_EXTRA_PLATFORMS" = "YES" ];
then
- PackageTests "net6.0" "freebsd-x64"
- PackageTests "net6.0" "linux-x86"
+ PackageTests "net8.0" "freebsd-x64"
+ PackageTests "net8.0" "linux-x86"
fi
else
PackageTests "$FRAMEWORK" "$RID"
@@ -413,20 +413,20 @@ then
if [[ -z "$RID" || -z "$FRAMEWORK" ]];
then
- Package "net6.0" "win-x64"
- Package "net6.0" "win-x86"
- Package "net6.0" "linux-x64"
- Package "net6.0" "linux-musl-x64"
- Package "net6.0" "linux-arm64"
- Package "net6.0" "linux-musl-arm64"
- Package "net6.0" "linux-arm"
- Package "net6.0" "linux-musl-arm"
- Package "net6.0" "osx-x64"
- Package "net6.0" "osx-arm64"
+ Package "net8.0" "win-x64"
+ Package "net8.0" "win-x86"
+ Package "net8.0" "linux-x64"
+ Package "net8.0" "linux-musl-x64"
+ Package "net8.0" "linux-arm64"
+ Package "net8.0" "linux-musl-arm64"
+ Package "net8.0" "linux-arm"
+ Package "net8.0" "linux-musl-arm"
+ Package "net8.0" "osx-x64"
+ Package "net8.0" "osx-arm64"
if [ "$ENABLE_EXTRA_PLATFORMS" = "YES" ];
then
- Package "net6.0" "freebsd-x64"
- Package "net6.0" "linux-x86"
+ Package "net8.0" "freebsd-x64"
+ Package "net8.0" "linux-x86"
fi
else
Package "$FRAMEWORK" "$RID"
@@ -436,7 +436,7 @@ fi
if [ "$INSTALLER" = "YES" ];
then
InstallInno
- BuildInstaller "net6.0" "win-x64"
- BuildInstaller "net6.0" "win-x86"
+ BuildInstaller "net8.0" "win-x64"
+ BuildInstaller "net8.0" "win-x86"
RemoveInno
fi
diff --git a/docs.sh b/docs.sh
index ccfde87a7..8540aaf10 100755
--- a/docs.sh
+++ b/docs.sh
@@ -1,7 +1,7 @@
#!/bin/bash
-set -e
+set -x
-FRAMEWORK="net6.0"
+FRAMEWORK="net8.0"
PLATFORM=$1
if [ "$PLATFORM" = "Windows" ]; then
diff --git a/package.json b/package.json
index bb99c1d7f..ad8105978 100644
--- a/package.json
+++ b/package.json
@@ -29,7 +29,7 @@
"@fortawesome/free-solid-svg-icons": "6.4.0",
"@fortawesome/react-fontawesome": "0.2.0",
"@juggle/resize-observer": "3.4.0",
- "@microsoft/signalr": "6.0.25",
+ "@microsoft/signalr": "8.0.7",
"@sentry/browser": "7.100.0",
"@sentry/integrations": "7.100.0",
"@types/node": "18.19.31",
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index e161b9952..2594af2e3 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -99,13 +99,6 @@
$(MSBuildProjectName.Replace('Prowlarr','NzbDrone'))
-
-
-
-
-
-
-
@@ -136,7 +129,7 @@
-
+
diff --git a/src/NzbDrone.Automation.Test/Prowlarr.Automation.Test.csproj b/src/NzbDrone.Automation.Test/Prowlarr.Automation.Test.csproj
index bb0b5fcc4..39a837e31 100644
--- a/src/NzbDrone.Automation.Test/Prowlarr.Automation.Test.csproj
+++ b/src/NzbDrone.Automation.Test/Prowlarr.Automation.Test.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
diff --git a/src/NzbDrone.Common.Test/Prowlarr.Common.Test.csproj b/src/NzbDrone.Common.Test/Prowlarr.Common.Test.csproj
index 0bf15596a..5cd51e814 100644
--- a/src/NzbDrone.Common.Test/Prowlarr.Common.Test.csproj
+++ b/src/NzbDrone.Common.Test/Prowlarr.Common.Test.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
diff --git a/src/NzbDrone.Common/Disk/DestinationAlreadyExistsException.cs b/src/NzbDrone.Common/Disk/DestinationAlreadyExistsException.cs
index ffdc36e0e..d96bb22e9 100644
--- a/src/NzbDrone.Common/Disk/DestinationAlreadyExistsException.cs
+++ b/src/NzbDrone.Common/Disk/DestinationAlreadyExistsException.cs
@@ -1,6 +1,5 @@
using System;
using System.IO;
-using System.Runtime.Serialization;
namespace NzbDrone.Common.Disk
{
@@ -24,10 +23,5 @@ namespace NzbDrone.Common.Disk
: base(message, innerException)
{
}
-
- protected DestinationAlreadyExistsException(SerializationInfo info, StreamingContext context)
- : base(info, context)
- {
- }
}
}
diff --git a/src/NzbDrone.Common/EnvironmentInfo/AppFolderFactory.cs b/src/NzbDrone.Common/EnvironmentInfo/AppFolderFactory.cs
index 178ce7a0f..0278a77a7 100644
--- a/src/NzbDrone.Common/EnvironmentInfo/AppFolderFactory.cs
+++ b/src/NzbDrone.Common/EnvironmentInfo/AppFolderFactory.cs
@@ -115,7 +115,7 @@ namespace NzbDrone.Common.EnvironmentInfo
catch (Exception ex)
{
_logger.Debug(ex, ex.Message);
- throw new ProwlarrStartupException("Unable to migrate DB from nzbdrone.db to {0}. Migrate manually", _appFolderInfo.GetDatabase());
+ throw new ProwlarrStartupException(ex, "Unable to migrate DB from nzbdrone.db to {0}. Migrate manually", _appFolderInfo.GetDatabase());
}
}
diff --git a/src/NzbDrone.Common/Prowlarr.Common.csproj b/src/NzbDrone.Common/Prowlarr.Common.csproj
index 6ab426c98..97b98027a 100644
--- a/src/NzbDrone.Common/Prowlarr.Common.csproj
+++ b/src/NzbDrone.Common/Prowlarr.Common.csproj
@@ -1,25 +1,25 @@
- net6.0
+ net8.0
ISMUSL
-
-
+
+
-
-
-
+
+
+
-
+
-
+
diff --git a/src/NzbDrone.Console/Prowlarr.Console.csproj b/src/NzbDrone.Console/Prowlarr.Console.csproj
index a1e85f4d6..e53204bc6 100644
--- a/src/NzbDrone.Console/Prowlarr.Console.csproj
+++ b/src/NzbDrone.Console/Prowlarr.Console.csproj
@@ -1,7 +1,7 @@
Exe
- net6.0
+ net8.0
..\NzbDrone.Host\Prowlarr.ico
diff --git a/src/NzbDrone.Core.Test/Prowlarr.Core.Test.csproj b/src/NzbDrone.Core.Test/Prowlarr.Core.Test.csproj
index 13bc15cbc..ce5633e63 100644
--- a/src/NzbDrone.Core.Test/Prowlarr.Core.Test.csproj
+++ b/src/NzbDrone.Core.Test/Prowlarr.Core.Test.csproj
@@ -1,9 +1,9 @@
- net6.0
+ net8.0
-
+
diff --git a/src/NzbDrone.Core/Prowlarr.Core.csproj b/src/NzbDrone.Core/Prowlarr.Core.csproj
index 8c9ce73ba..314050efe 100644
--- a/src/NzbDrone.Core/Prowlarr.Core.csproj
+++ b/src/NzbDrone.Core/Prowlarr.Core.csproj
@@ -1,26 +1,26 @@
- net6.0
+ net8.0
-
-
-
-
+
+
+
+
-
+
-
+
-
+
-
+
diff --git a/src/NzbDrone.Host.Test/Prowlarr.Host.Test.csproj b/src/NzbDrone.Host.Test/Prowlarr.Host.Test.csproj
index 6e9231a1a..8d7fa3773 100644
--- a/src/NzbDrone.Host.Test/Prowlarr.Host.Test.csproj
+++ b/src/NzbDrone.Host.Test/Prowlarr.Host.Test.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
diff --git a/src/NzbDrone.Host/Prowlarr.Host.csproj b/src/NzbDrone.Host/Prowlarr.Host.csproj
index ee61ffd5c..78f94a28c 100644
--- a/src/NzbDrone.Host/Prowlarr.Host.csproj
+++ b/src/NzbDrone.Host/Prowlarr.Host.csproj
@@ -1,12 +1,12 @@
- net6.0
+ net8.0
Library
-
-
-
+
+
+
diff --git a/src/NzbDrone.Integration.Test/Prowlarr.Integration.Test.csproj b/src/NzbDrone.Integration.Test/Prowlarr.Integration.Test.csproj
index d15de3f62..aba31f227 100644
--- a/src/NzbDrone.Integration.Test/Prowlarr.Integration.Test.csproj
+++ b/src/NzbDrone.Integration.Test/Prowlarr.Integration.Test.csproj
@@ -1,10 +1,10 @@
- net6.0
+ net8.0
Library
-
+
diff --git a/src/NzbDrone.Libraries.Test/Prowlarr.Libraries.Test.csproj b/src/NzbDrone.Libraries.Test/Prowlarr.Libraries.Test.csproj
index e905dd74d..2ba38c9f2 100644
--- a/src/NzbDrone.Libraries.Test/Prowlarr.Libraries.Test.csproj
+++ b/src/NzbDrone.Libraries.Test/Prowlarr.Libraries.Test.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
diff --git a/src/NzbDrone.Mono.Test/Prowlarr.Mono.Test.csproj b/src/NzbDrone.Mono.Test/Prowlarr.Mono.Test.csproj
index 6d2d1a18d..554e12664 100644
--- a/src/NzbDrone.Mono.Test/Prowlarr.Mono.Test.csproj
+++ b/src/NzbDrone.Mono.Test/Prowlarr.Mono.Test.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
diff --git a/src/NzbDrone.Mono/Prowlarr.Mono.csproj b/src/NzbDrone.Mono/Prowlarr.Mono.csproj
index 46d7dabc8..877810c31 100644
--- a/src/NzbDrone.Mono/Prowlarr.Mono.csproj
+++ b/src/NzbDrone.Mono/Prowlarr.Mono.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
true
diff --git a/src/NzbDrone.SignalR/Prowlarr.SignalR.csproj b/src/NzbDrone.SignalR/Prowlarr.SignalR.csproj
index b33b66994..6c6a22776 100644
--- a/src/NzbDrone.SignalR/Prowlarr.SignalR.csproj
+++ b/src/NzbDrone.SignalR/Prowlarr.SignalR.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
Library
diff --git a/src/NzbDrone.Test.Common/NzbDroneRunner.cs b/src/NzbDrone.Test.Common/NzbDroneRunner.cs
index 5339fe13f..2b2196482 100644
--- a/src/NzbDrone.Test.Common/NzbDroneRunner.cs
+++ b/src/NzbDrone.Test.Common/NzbDroneRunner.cs
@@ -55,7 +55,7 @@ namespace NzbDrone.Test.Common
if (BuildInfo.IsDebug)
{
- var frameworkFolder = "net6.0";
+ var frameworkFolder = "net8.0";
Start(Path.Combine(TestContext.CurrentContext.TestDirectory, "..", "..", "_output", frameworkFolder, consoleExe));
}
else
diff --git a/src/NzbDrone.Test.Common/Prowlarr.Test.Common.csproj b/src/NzbDrone.Test.Common/Prowlarr.Test.Common.csproj
index 59dcf031a..baaa01084 100644
--- a/src/NzbDrone.Test.Common/Prowlarr.Test.Common.csproj
+++ b/src/NzbDrone.Test.Common/Prowlarr.Test.Common.csproj
@@ -1,12 +1,12 @@
- net6.0
+ net8.0
-
+
-
+
diff --git a/src/NzbDrone.Test.Dummy/Prowlarr.Test.Dummy.csproj b/src/NzbDrone.Test.Dummy/Prowlarr.Test.Dummy.csproj
index 1ead72088..cd894cc15 100644
--- a/src/NzbDrone.Test.Dummy/Prowlarr.Test.Dummy.csproj
+++ b/src/NzbDrone.Test.Dummy/Prowlarr.Test.Dummy.csproj
@@ -1,6 +1,6 @@
Exe
- net6.0
+ net8.0
\ No newline at end of file
diff --git a/src/NzbDrone.Update.Test/Prowlarr.Update.Test.csproj b/src/NzbDrone.Update.Test/Prowlarr.Update.Test.csproj
index 448d0869e..359c5e98e 100644
--- a/src/NzbDrone.Update.Test/Prowlarr.Update.Test.csproj
+++ b/src/NzbDrone.Update.Test/Prowlarr.Update.Test.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
diff --git a/src/NzbDrone.Update/Prowlarr.Update.csproj b/src/NzbDrone.Update/Prowlarr.Update.csproj
index 2d2812f00..8a8af494e 100644
--- a/src/NzbDrone.Update/Prowlarr.Update.csproj
+++ b/src/NzbDrone.Update/Prowlarr.Update.csproj
@@ -1,12 +1,12 @@
WinExe
- net6.0
+ net8.0
-
+
diff --git a/src/NzbDrone.Windows.Test/Prowlarr.Windows.Test.csproj b/src/NzbDrone.Windows.Test/Prowlarr.Windows.Test.csproj
index 632293b92..36d9e2855 100644
--- a/src/NzbDrone.Windows.Test/Prowlarr.Windows.Test.csproj
+++ b/src/NzbDrone.Windows.Test/Prowlarr.Windows.Test.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
diff --git a/src/NzbDrone.Windows/Prowlarr.Windows.csproj b/src/NzbDrone.Windows/Prowlarr.Windows.csproj
index e4407e1cd..4f1f1834c 100644
--- a/src/NzbDrone.Windows/Prowlarr.Windows.csproj
+++ b/src/NzbDrone.Windows/Prowlarr.Windows.csproj
@@ -1,10 +1,10 @@
- net6.0
+ net8.0
true
-
+
diff --git a/src/NzbDrone/Prowlarr.csproj b/src/NzbDrone/Prowlarr.csproj
index ca6227e15..767207008 100644
--- a/src/NzbDrone/Prowlarr.csproj
+++ b/src/NzbDrone/Prowlarr.csproj
@@ -1,14 +1,14 @@
WinExe
- net6.0-windows
+ net8.0-windows
win-x64;win-x86
true
..\NzbDrone.Host\Prowlarr.ico
true
-
+
diff --git a/src/Prowlarr.Api.V1.Test/Prowlarr.Api.V1.Test.csproj b/src/Prowlarr.Api.V1.Test/Prowlarr.Api.V1.Test.csproj
index 0c72fa8ca..eec930286 100644
--- a/src/Prowlarr.Api.V1.Test/Prowlarr.Api.V1.Test.csproj
+++ b/src/Prowlarr.Api.V1.Test/Prowlarr.Api.V1.Test.csproj
@@ -1,6 +1,6 @@
- net6.0
+ net8.0
diff --git a/src/Prowlarr.Api.V1/Indexers/NewznabController.cs b/src/Prowlarr.Api.V1/Indexers/NewznabController.cs
index 4ee129caf..656037ca5 100644
--- a/src/Prowlarr.Api.V1/Indexers/NewznabController.cs
+++ b/src/Prowlarr.Api.V1/Indexers/NewznabController.cs
@@ -341,7 +341,7 @@ namespace NzbDrone.Api.V1.Indexers
{
if (!HttpContext.Response.Headers.ContainsKey("Retry-After") && retryAfterSeconds > 0)
{
- HttpContext.Response.Headers.Add("Retry-After", $"{retryAfterSeconds}");
+ HttpContext.Response.Headers.Append("Retry-After", $"{retryAfterSeconds}");
}
}
diff --git a/src/Prowlarr.Api.V1/Prowlarr.Api.V1.csproj b/src/Prowlarr.Api.V1/Prowlarr.Api.V1.csproj
index 49878d538..2cd6c5172 100644
--- a/src/Prowlarr.Api.V1/Prowlarr.Api.V1.csproj
+++ b/src/Prowlarr.Api.V1/Prowlarr.Api.V1.csproj
@@ -1,10 +1,10 @@
- net6.0
+ net8.0
-
+
diff --git a/src/Prowlarr.Benchmark.Test/Prowlarr.Benchmark.Test.csproj b/src/Prowlarr.Benchmark.Test/Prowlarr.Benchmark.Test.csproj
index 1559caafc..260fdafec 100644
--- a/src/Prowlarr.Benchmark.Test/Prowlarr.Benchmark.Test.csproj
+++ b/src/Prowlarr.Benchmark.Test/Prowlarr.Benchmark.Test.csproj
@@ -1,7 +1,7 @@
- net6.0
+ net8.0
false
diff --git a/src/Prowlarr.Http/Authentication/ApiKeyAuthenticationHandler.cs b/src/Prowlarr.Http/Authentication/ApiKeyAuthenticationHandler.cs
index eda470c4c..d39a57c7d 100644
--- a/src/Prowlarr.Http/Authentication/ApiKeyAuthenticationHandler.cs
+++ b/src/Prowlarr.Http/Authentication/ApiKeyAuthenticationHandler.cs
@@ -28,9 +28,8 @@ namespace Prowlarr.Http.Authentication
public ApiKeyAuthenticationHandler(IOptionsMonitor options,
ILoggerFactory logger,
UrlEncoder encoder,
- ISystemClock clock,
IConfigFileProvider config)
- : base(options, logger, encoder, clock)
+ : base(options, logger, encoder)
{
_apiKey = config.ApiKey;
}
diff --git a/src/Prowlarr.Http/Authentication/BasicAuthenticationHandler.cs b/src/Prowlarr.Http/Authentication/BasicAuthenticationHandler.cs
index 0ff574654..765551e5c 100644
--- a/src/Prowlarr.Http/Authentication/BasicAuthenticationHandler.cs
+++ b/src/Prowlarr.Http/Authentication/BasicAuthenticationHandler.cs
@@ -6,6 +6,7 @@ using System.Text.Encodings.Web;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authentication;
+using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using NzbDrone.Common.EnvironmentInfo;
@@ -20,9 +21,8 @@ namespace Prowlarr.Http.Authentication
public BasicAuthenticationHandler(IAuthenticationService authService,
IOptionsMonitor options,
ILoggerFactory logger,
- UrlEncoder encoder,
- ISystemClock clock)
- : base(options, logger, encoder, clock)
+ UrlEncoder encoder)
+ : base(options, logger, encoder)
{
_authService = authService;
}
@@ -71,7 +71,7 @@ namespace Prowlarr.Http.Authentication
protected override Task HandleChallengeAsync(AuthenticationProperties properties)
{
- Response.Headers.Add("WWW-Authenticate", $"Basic realm=\"{BuildInfo.AppName}\"");
+ Response.Headers.Append("WWW-Authenticate", $"Basic realm=\"{BuildInfo.AppName}\"");
Response.StatusCode = 401;
return Task.CompletedTask;
}
diff --git a/src/Prowlarr.Http/Authentication/NoAuthenticationHandler.cs b/src/Prowlarr.Http/Authentication/NoAuthenticationHandler.cs
index 9b5cae860..4c023b67e 100644
--- a/src/Prowlarr.Http/Authentication/NoAuthenticationHandler.cs
+++ b/src/Prowlarr.Http/Authentication/NoAuthenticationHandler.cs
@@ -13,9 +13,8 @@ namespace Prowlarr.Http.Authentication
{
public NoAuthenticationHandler(IOptionsMonitor options,
ILoggerFactory logger,
- UrlEncoder encoder,
- ISystemClock clock)
- : base(options, logger, encoder, clock)
+ UrlEncoder encoder)
+ : base(options, logger, encoder)
{
}
diff --git a/src/Prowlarr.Http/Middleware/VersionMiddleware.cs b/src/Prowlarr.Http/Middleware/VersionMiddleware.cs
index 61c990f59..140d085fb 100644
--- a/src/Prowlarr.Http/Middleware/VersionMiddleware.cs
+++ b/src/Prowlarr.Http/Middleware/VersionMiddleware.cs
@@ -22,7 +22,7 @@ namespace Prowlarr.Http.Middleware
{
if (context.Request.IsApiRequest() && !context.Response.Headers.ContainsKey(VERSIONHEADER))
{
- context.Response.Headers.Add(VERSIONHEADER, _version);
+ context.Response.Headers.Append(VERSIONHEADER, _version);
}
await _next(context);
diff --git a/src/Prowlarr.Http/Prowlarr.Http.csproj b/src/Prowlarr.Http/Prowlarr.Http.csproj
index 39bf131f8..274931bdb 100644
--- a/src/Prowlarr.Http/Prowlarr.Http.csproj
+++ b/src/Prowlarr.Http/Prowlarr.Http.csproj
@@ -1,11 +1,11 @@
- net6.0
+ net8.0
-
-
+
+
diff --git a/src/Prowlarr.Http/REST/RestController.cs b/src/Prowlarr.Http/REST/RestController.cs
index 3ec48b75f..3d5348ed8 100644
--- a/src/Prowlarr.Http/REST/RestController.cs
+++ b/src/Prowlarr.Http/REST/RestController.cs
@@ -4,6 +4,7 @@ using System.Linq;
using System.Reflection;
using FluentValidation;
using FluentValidation.Results;
+using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Controllers;
using Microsoft.AspNetCore.Mvc.Filters;
@@ -89,7 +90,7 @@ namespace Prowlarr.Http.REST
if (controllerAttributes.Any(x => x.AttributeType == DEPRECATED_ATTRIBUTE) || attributes.Any(x => x.AttributeType == DEPRECATED_ATTRIBUTE))
{
_logger.Warn("API call made to deprecated endpoint from {0}", Request.Headers.UserAgent.ToString());
- Response.Headers.Add("Deprecation", "true");
+ Response.Headers.Append("Deprecation", "true");
}
base.OnActionExecuting(context);
diff --git a/src/ServiceHelpers/ServiceInstall/ServiceInstall.csproj b/src/ServiceHelpers/ServiceInstall/ServiceInstall.csproj
index 21e3125e0..79a732c2f 100644
--- a/src/ServiceHelpers/ServiceInstall/ServiceInstall.csproj
+++ b/src/ServiceHelpers/ServiceInstall/ServiceInstall.csproj
@@ -1,7 +1,7 @@
WinExe
- net6.0
+ net8.0
diff --git a/src/ServiceHelpers/ServiceUninstall/ServiceUninstall.csproj b/src/ServiceHelpers/ServiceUninstall/ServiceUninstall.csproj
index 21e3125e0..79a732c2f 100644
--- a/src/ServiceHelpers/ServiceUninstall/ServiceUninstall.csproj
+++ b/src/ServiceHelpers/ServiceUninstall/ServiceUninstall.csproj
@@ -1,7 +1,7 @@
WinExe
- net6.0
+ net8.0
diff --git a/test.sh b/test.sh
index a917ecbdf..202942e32 100755
--- a/test.sh
+++ b/test.sh
@@ -37,11 +37,14 @@ fi
if [ "$PLATFORM" = "Windows" ]; then
mkdir -p "$ProgramData/Prowlarr"
WHERE="$WHERE&Category!=LINUX"
-elif [ "$PLATFORM" = "Linux" ] || [ "$PLATFORM" = "Mac" ] ; then
+elif [ "$PLATFORM" = "Linux" ]; then
mkdir -p ~/.config/Prowlarr
WHERE="$WHERE&Category!=WINDOWS"
+elif [ "$PLATFORM" = "Mac" ]; then
+ mkdir -p ~/Library/Application\ Support/Prowlarr
+ WHERE="$WHERE&Category!=WINDOWS"
else
- echo "Platform must be provided as first arguement: Windows, Linux or Mac"
+ echo "Platform must be provided as first argument: Windows, Linux or Mac"
exit 1
fi
diff --git a/yarn.lock b/yarn.lock
index 2e029090d..c7dd8fdb3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1229,14 +1229,14 @@
resolved "https://registry.yarnpkg.com/@kurkle/color/-/color-0.3.2.tgz#5acd38242e8bde4f9986e7913c8fdf49d3aa199f"
integrity sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==
-"@microsoft/signalr@6.0.25":
- version "6.0.25"
- resolved "https://registry.yarnpkg.com/@microsoft/signalr/-/signalr-6.0.25.tgz#009f043066d383e2de41a483bd7e02bfd74d3cf8"
- integrity sha512-8AzrpxS+E0yn1tXSlv7+UlURLmSxTQDgbvOT0pGKXjZT7MkhnDP+/GLuk7veRtUjczou/x32d9PHhYlr2NBy6Q==
+"@microsoft/signalr@8.0.7":
+ version "8.0.7"
+ resolved "https://registry.yarnpkg.com/@microsoft/signalr/-/signalr-8.0.7.tgz#94419ddbf9418753e493f4ae4c13990316ec2ea5"
+ integrity sha512-PHcdMv8v5hJlBkRHAuKG5trGViQEkPYee36LnJQx4xHOQ5LL4X0nEWIxOp5cCtZ7tu+30quz5V3k0b1YNuc6lw==
dependencies:
abort-controller "^3.0.0"
- eventsource "^1.0.7"
- fetch-cookie "^0.11.0"
+ eventsource "^2.0.2"
+ fetch-cookie "^2.0.3"
node-fetch "^2.6.7"
ws "^7.4.5"
@@ -3423,10 +3423,10 @@ events@^3.2.0:
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
-eventsource@^1.0.7:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.2.tgz#bc75ae1c60209e7cb1541231980460343eaea7c2"
- integrity sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==
+eventsource@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-2.0.2.tgz#76dfcc02930fb2ff339520b6d290da573a9e8508"
+ integrity sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==
extend-shallow@^1.1.2:
version "1.1.4"
@@ -3495,12 +3495,13 @@ faye-websocket@~0.10.0:
dependencies:
websocket-driver ">=0.5.1"
-fetch-cookie@^0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/fetch-cookie/-/fetch-cookie-0.11.0.tgz#e046d2abadd0ded5804ce7e2cae06d4331c15407"
- integrity sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA==
+fetch-cookie@^2.0.3:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/fetch-cookie/-/fetch-cookie-2.2.0.tgz#01086b6b5b1c3e08f15ffd8647b02ca100377365"
+ integrity sha512-h9AgfjURuCgA2+2ISl8GbavpUdR+WGAM2McW/ovn4tVccegp8ZqCKWSBR8uRdM8dDNlx5WdKRWxBYUwteLDCNQ==
dependencies:
- tough-cookie "^2.3.3 || ^3.0.1 || ^4.0.0"
+ set-cookie-parser "^2.4.8"
+ tough-cookie "^4.0.0"
file-entry-cache@^6.0.1:
version "6.0.1"
@@ -6278,6 +6279,11 @@ serialize-javascript@^6.0.1:
dependencies:
randombytes "^2.1.0"
+set-cookie-parser@^2.4.8:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz#131921e50f62ff1a66a461d7d62d7b21d5d15a51"
+ integrity sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==
+
set-function-length@^1.2.1:
version "1.2.2"
resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
@@ -6812,7 +6818,7 @@ to-space-case@^1.0.0:
dependencies:
to-no-case "^1.0.0"
-"tough-cookie@^2.3.3 || ^3.0.1 || ^4.0.0":
+tough-cookie@^4.0.0:
version "4.1.3"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf"
integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==