From 8fe924fdcd57612efce922af62fca6c858ac8006 Mon Sep 17 00:00:00 2001 From: ta264 Date: Mon, 28 Oct 2019 21:30:08 +0000 Subject: [PATCH] New: Multi target net framework 4.6.2 and net core 3.0 --- .gitignore | 6 + azure-pipelines.yml | 204 ++++++++++----- build.sh | 190 ++++++++------ frontend/src/Components/SignalRConnector.js | 34 ++- .../src/Settings/General/GeneralSettings.js | 4 +- .../General/GeneralSettingsConnector.js | 1 - frontend/src/Settings/General/HostSettings.js | 15 +- .../src/Settings/General/UpdateSettings.js | 6 +- .../MediaManagement/MediaManagement.js | 8 +- .../MediaManagementConnector.js | 2 +- frontend/src/System/Status/About/About.js | 18 +- package.json | 2 +- setup/lidarr.iss | 6 +- src/Directory.Build.props | 3 +- src/Libraries/Interop.NetFwTypeLib.dll | Bin 22016 -> 20992 bytes src/Libraries/Mono.Posix.dll | Bin 194048 -> 0 bytes src/Lidarr.Api.V1/Lidarr.Api.V1.csproj | 4 +- src/Lidarr.Api.V1/System/SystemModule.cs | 2 +- .../Extensions/Pipelines/GZipPipeline.cs | 5 +- src/Lidarr.Http/Lidarr.Http.csproj | 2 +- src/Marr.Data/DataMapper.cs | 9 - src/Marr.Data/Marr.Data.csproj | 2 +- src/Marr.Data/Parameters/OleDbTypeBuilder.cs | 68 ----- src/Marr.Data/Parameters/SqlDbTypeBuilder.cs | 71 ------ src/MonoTorrent/MonoTorrent.csproj | 2 +- src/NzbDrone.Api.Test/Lidarr.Api.Test.csproj | 9 +- .../Lidarr.Automation.Test.csproj | 6 +- .../Http/HttpClientFixture.cs | 3 +- .../Lidarr.Common.Test.csproj | 13 +- .../PathExtensionFixture.cs | 4 +- .../ProcessProviderFixture.cs | 13 +- .../ServiceProviderFixture.cs | 5 +- .../Composition/ContainerBuilderBase.cs | 60 ++++- .../EnvironmentInfo/AppFolderFactory.cs | 17 +- .../EnvironmentInfo/AppFolderInfo.cs | 4 +- .../EnvironmentInfo/PlatformInfo.cs | 19 +- .../EnvironmentInfo/RuntimeInfo.cs | 14 + .../Exceptions/ServiceProviderException.cs | 29 +++ .../Extensions/DictionaryExtensions.cs | 4 +- .../Extensions/GzipExtensions.cs | 30 +++ .../Extensions/PathExtensions.cs | 16 +- .../Http/Dispatchers/ManagedHttpDispatcher.cs | 10 +- src/NzbDrone.Common/Lidarr.Common.csproj | 14 +- src/NzbDrone.Common/ServiceProvider.cs | 49 ++-- src/NzbDrone.Console/Lidarr.Console.csproj | 2 +- .../Download/DownloadServiceFixture.cs | 2 +- .../Fingerprinting/AcoustidResponses.json | 20 +- .../Checks/DotnetVersionCheckFixture.cs | 69 ----- .../Lidarr.Core.Test.csproj | 12 +- .../FingerprintingServiceFixture.cs | 22 +- .../UpdatePackageProviderFixture.cs | 1 + .../Blacklisting/BlacklistService.cs | 1 + .../Download/Clients/Deluge/Deluge.cs | 2 +- .../Clients/Hadouken/HadoukenProxy.cs | 6 +- src/NzbDrone.Core/Lidarr.Core.csproj | 8 +- .../Organizer/FileNameBuilder.cs | 2 +- .../Parser/FingerprintingService.cs | 14 +- .../Update/InstallUpdateService.cs | 12 + src/NzbDrone.Core/Update/UpdatePackage.cs | 3 +- .../Update/UpdatePackageProvider.cs | 5 +- .../Lidarr.Host.Test.csproj | 13 +- src/NzbDrone.Host/Lidarr.Host.csproj | 14 +- .../WebHost/Middleware/SignalRMiddleware.cs | 14 +- .../WebHost/WebHostController.cs | 17 +- .../ApiTests/FileSystemFixture.cs | 3 +- .../ApiTests/RootFolderFixture.cs | 1 + .../Lidarr.Integration.Test.csproj | 14 +- .../Lidarr.Libraries.Test.csproj | 11 +- .../Lidarr.Mono.Test.csproj | 24 +- src/NzbDrone.Mono/Lidarr.Mono.csproj | 19 +- src/NzbDrone.SignalR/Lidarr.SignalR.csproj | 7 +- src/NzbDrone.Test.Common/AutoMoq/AutoMoqer.cs | 5 + .../Lidarr.Test.Common.csproj | 4 +- src/NzbDrone.Test.Common/NzbDroneRunner.cs | 20 +- .../Lidarr.Test.Dummy.csproj | 2 +- .../Lidarr.Update.Test.csproj | 11 +- .../StartNzbDroneService.cs | 3 +- .../UpdateProviderStartFixture.cs | 241 ------------------ src/NzbDrone.Update/Lidarr.Update.csproj | 2 +- .../UpdateEngine/InstallUpdateService.cs | 2 +- .../UpdateEngine/StartNzbDrone.cs | 7 +- .../DiskProviderTests/DiskProviderFixture.cs | 10 +- .../DotNetPlatformInfoFixture.cs | 2 +- .../Lidarr.Windows.Test.csproj | 11 +- src/NzbDrone.Windows/Disk/DiskProvider.cs | 6 +- src/NzbDrone.Windows/Lidarr.Windows.csproj | 3 +- src/NzbDrone/Lidarr.csproj | 7 +- src/PublishAllRids.targets | 21 +- .../ServiceInstall/ServiceInstall.csproj | 7 +- .../ServiceUninstall/ServiceUninstall.csproj | 7 +- src/coverlet.runsettings | 21 ++ test.sh | 35 +-- tools/nuget/nuget.exe | Bin 5688608 -> 0 bytes tools/pdb2mdb/Mono.Cecil.Mdb.dll | Bin 43520 -> 0 bytes tools/pdb2mdb/Mono.Cecil.dll | Bin 282624 -> 0 bytes .../Mono.CompilerServices.SymbolWriter.dll | Bin 45056 -> 0 bytes tools/pdb2mdb/pdb2mdb.exe | Bin 61952 -> 0 bytes tools/vswhere/vswhere.exe | Bin 411136 -> 0 bytes yarn.lock | 18 +- 99 files changed, 896 insertions(+), 850 deletions(-) delete mode 100644 src/Libraries/Mono.Posix.dll delete mode 100644 src/Marr.Data/Parameters/OleDbTypeBuilder.cs delete mode 100644 src/Marr.Data/Parameters/SqlDbTypeBuilder.cs create mode 100644 src/NzbDrone.Common/Exceptions/ServiceProviderException.cs create mode 100644 src/NzbDrone.Common/Extensions/GzipExtensions.cs delete mode 100644 src/NzbDrone.Core.Test/HealthCheck/Checks/DotnetVersionCheckFixture.cs delete mode 100644 src/NzbDrone.Update.Test/UpdateProviderStartFixture.cs create mode 100644 src/coverlet.runsettings delete mode 100644 tools/nuget/nuget.exe delete mode 100644 tools/pdb2mdb/Mono.Cecil.Mdb.dll delete mode 100644 tools/pdb2mdb/Mono.Cecil.dll delete mode 100644 tools/pdb2mdb/Mono.CompilerServices.SymbolWriter.dll delete mode 100644 tools/pdb2mdb/pdb2mdb.exe delete mode 100644 tools/vswhere/vswhere.exe diff --git a/.gitignore b/.gitignore index ed6772d69..eeab2f98f 100644 --- a/.gitignore +++ b/.gitignore @@ -127,6 +127,12 @@ coverage*.json setup/Output/ *.~is +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +**/Properties/launchSettings.json + #VS outout folders bin obj diff --git a/azure-pipelines.yml b/azure-pipelines.yml index c168ca80b..ce2d564d6 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -11,11 +11,6 @@ variables: minorVersion: $[counter('minorVersion', 1076)] lidarrVersion: '$(majorVersion).$(minorVersion)' buildName: '$(Build.SourceBranchName).$(lidarrVersion)' - windowsInstaller: 'Lidarr.$(buildName).windows-installer.exe' - windowsZip: 'Lidarr.$(buildName).windows.zip' - macOsApp: 'Lidarr.$(buildName).osx-app.zip' - macOsTar: 'Lidarr.$(buildName).osx.tar.gz' - linuxTar: 'Lidarr.$(buildName).linux.tar.gz' sentryOrg: 'lidarr' dotnetVersion: '3.0.100' @@ -44,7 +39,7 @@ stages: imageName: 'macos-10.14' Windows: osName: 'Windows' - imageName: 'vs2017-win2016' + imageName: 'windows-2019' pool: vmImage: $(imageName) @@ -59,6 +54,7 @@ stages: displayName: 'Install .net core 3.0' inputs: version: $(dotnetVersion) + condition: ne(variables['osName'], 'Windows') - bash: ./build.sh --backend displayName: Build Lidarr Backend - bash: | @@ -66,22 +62,25 @@ stages: find ${OUTPUTFOLDER} -depth -empty -type d -exec rm -r "{}" \; find ${TESTSFOLDER} -type f ! -path "*/publish/*" -exec rm -rf {} \; find ${TESTSFOLDER} -depth -empty -type d -exec rm -r "{}" \; - ls -lR displayName: Clean up intermediate output - publish: $(outputFolder) artifact: '$(osName)Backend' displayName: Publish Backend condition: and(succeeded(), eq(variables['osName'], 'Windows')) - - publish: '$(testsFolder)/net462/win-x64/publish' - artifact: WindowsTests + - publish: '$(testsFolder)/netcoreapp3.0/win-x64/publish' + artifact: WindowsCoreTests displayName: Publish Windows Test Package condition: and(succeeded(), eq(variables['osName'], 'Windows')) - publish: '$(testsFolder)/net462/linux-x64/publish' artifact: LinuxTests displayName: Publish Linux Test Package condition: and(succeeded(), eq(variables['osName'], 'Windows')) - - publish: '$(testsFolder)/net462/osx-x64/publish' - artifact: MacTests + - publish: '$(testsFolder)/netcoreapp3.0/linux-x64/publish' + artifact: LinuxCoreTests + displayName: Publish Linux Test Package + condition: and(succeeded(), eq(variables['osName'], 'Windows')) + - publish: '$(testsFolder)/netcoreapp3.0/osx-x64/publish' + artifact: MacCoreTests displayName: Publish MacOS Test Package condition: and(succeeded(), eq(variables['osName'], 'Windows')) @@ -101,7 +100,7 @@ stages: imageName: 'macos-10.14' Windows: osName: 'Windows' - imageName: 'vs2017-win2016' + imageName: 'windows-2019' pool: vmImage: $(imageName) steps: @@ -129,7 +128,7 @@ stages: - job: Windows_Installer displayName: Create Installer pool: - vmImage: 'vs2017-win2016' + vmImage: 'windows-2019' steps: - checkout: self fetchDepth: 1 @@ -148,9 +147,9 @@ stages: - bash: ./build.sh --packages displayName: Create Packages - bash: | - ./setup/inno/ISCC.exe "./setup/lidarr.iss" - cp ./setup/output/Lidarr.*windows.exe ${BUILD_ARTIFACTSTAGINGDIRECTORY}/${WINDOWSINSTALLER} - displayName: Create Windows installer + setup/inno/ISCC.exe setup/lidarr.iss //DFramework=netcoreapp3.0 + cp setup/output/Lidarr.*windows.netcoreapp3.0.exe ${BUILD_ARTIFACTSTAGINGDIRECTORY}/Lidarr.${BUILDNAME}.windows-core-x64-installer.exe + displayName: Create .NET Core Windows installer - publish: $(Build.ArtifactStagingDirectory) artifact: 'WindowsInstaller' displayName: Publish Installer @@ -184,37 +183,62 @@ stages: - bash: | find . -name "fpcalc" -exec chmod a+x {} \; find . -name "Lidarr" -exec chmod a+x {} \; - displayName: Set Mac executable bits + find . -name "Lidarr.Update" -exec chmod a+x {} \; + displayName: Set executable bits - task: ArchiveFiles@2 - displayName: Create Windows zip + displayName: Create Windows Core zip inputs: - archiveFile: '$(Build.ArtifactStagingDirectory)/$(windowsZip)' + archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).windows-core-x64.zip' archiveType: 'zip' includeRootFolder: false - rootFolderOrFile: $(artifactsFolder)/windows/net462 + rootFolderOrFile: $(artifactsFolder)/windows/netcoreapp3.0 - task: ArchiveFiles@2 - displayName: Create MacOS app + displayName: Create MacOS Core app inputs: - archiveFile: '$(Build.ArtifactStagingDirectory)/$(macOsApp)' + archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).osx-app-core-x64.zip' archiveType: 'zip' includeRootFolder: false - rootFolderOrFile: $(artifactsFolder)/macos-app/net462 + rootFolderOrFile: $(artifactsFolder)/macos-app/netcoreapp3.0 + - task: ArchiveFiles@2 + displayName: Create MacOS Core tar + inputs: + archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).osx-core-x64.tar.gz' + archiveType: 'tar' + tarCompression: 'gz' + includeRootFolder: false + rootFolderOrFile: $(artifactsFolder)/macos/netcoreapp3.0 + - task: ArchiveFiles@2 + displayName: Create Linux Mono tar + inputs: + archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).linux.tar.gz' + archiveType: 'tar' + tarCompression: 'gz' + includeRootFolder: false + rootFolderOrFile: $(artifactsFolder)/linux-x64/net462 - task: ArchiveFiles@2 - displayName: Create MacOS tar + displayName: Create Linux Core tar inputs: - archiveFile: '$(Build.ArtifactStagingDirectory)/$(macOsTar)' + archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).linux-core-x64.tar.gz' archiveType: 'tar' tarCompression: 'gz' includeRootFolder: false - rootFolderOrFile: $(artifactsFolder)/macos/net462 + rootFolderOrFile: $(artifactsFolder)/linux-x64/netcoreapp3.0 - task: ArchiveFiles@2 - displayName: Create Linux tar + displayName: Create ARM32 Core tar inputs: - archiveFile: '$(Build.ArtifactStagingDirectory)/$(linuxTar)' + archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).linux-core-arm.tar.gz' archiveType: 'tar' tarCompression: 'gz' includeRootFolder: false - rootFolderOrFile: $(artifactsFolder)/linux/net462 + rootFolderOrFile: $(artifactsFolder)/linux-arm/netcoreapp3.0 + - task: ArchiveFiles@2 + displayName: Create Linux Core tar + inputs: + archiveFile: '$(Build.ArtifactStagingDirectory)/Lidarr.$(buildName).linux-core-arm64.tar.gz' + archiveType: 'tar' + tarCompression: 'gz' + includeRootFolder: false + rootFolderOrFile: $(artifactsFolder)/linux-arm64/netcoreapp3.0 - publish: $(Build.ArtifactStagingDirectory) artifact: 'Packages' displayName: Publish Packages @@ -250,9 +274,19 @@ stages: displayName: Unit Native strategy: matrix: - Windows: + MacCore: + osName: 'Mac' + testName: 'MacCore' + imageName: 'macos-10.13' + WindowsCore: osName: 'Windows' - imageName: 'vs2017-win2016' + testName: 'WindowsCore' + imageName: 'windows-2019' + LinuxCore: + osName: 'Linux' + testName: 'LinuxCore' + imageName: 'ubuntu-16.04' + pattern: 'Lidarr.**.linux-core-x64.tar.gz' pool: vmImage: $(imageName) @@ -263,15 +297,21 @@ stages: displayName: 'Install .net core 3.0' inputs: version: $(dotnetVersion) + condition: ne(variables['osName'], 'Windows') - task: DownloadPipelineArtifact@2 displayName: Download Test Artifact inputs: buildType: 'current' - artifactName: '$(osName)Tests' + artifactName: '$(testName)Tests' targetPath: $(testsFolder) - powershell: Set-Service SCardSvr -StartupType Manual displayName: Enable Windows Test Service condition: and(succeeded(), eq(variables['osName'], 'Windows')) + - bash: | + wget https://github.com/acoustid/chromaprint/releases/download/v1.4.3/chromaprint-fpcalc-1.4.3-linux-x86_64.tar.gz + sudo tar xf chromaprint-fpcalc-1.4.3-linux-x86_64.tar.gz --strip-components=1 --directory /usr/bin + displayName: Install fpcalc + condition: and(succeeded(), eq(variables['osName'], 'Linux')) - bash: | SYMLINK=5_18_1 MONOPREFIX=/Library/Frameworks/Mono.framework/Versions/$SYMLINK @@ -296,7 +336,7 @@ stages: inputs: testResultsFormat: 'NUnit' testResultsFiles: '**/TestResult.xml' - testRunTitle: '$(osName) Unit Tests' + testRunTitle: '$(testName) Unit Tests' failTaskOnFailedTests: true - job: Unit_Docker @@ -314,7 +354,10 @@ stages: containerImage: servarr/testimages:mono-6.10 mono604: testName: 'Mono 6.4' - containerImage: servarr/testimages:mono-6.12 + containerImage: lidarr/testimages:mono-6.4 + mono606: + testName: 'Mono 6.6' + containerImage: lidarr/testimages:mono-6.6 pool: vmImage: 'ubuntu-16.04' @@ -326,12 +369,17 @@ stages: steps: - bash: mono --version displayName: Check Mono version + - task: UseDotNet@2 + displayName: 'Install .net core 3.0' + inputs: + version: $(dotnetVersion) + condition: ne(variables['osName'], 'Windows') - checkout: none - task: DownloadPipelineArtifact@2 displayName: Download Test Artifact inputs: buildType: 'current' - artifactName: WindowsTests + artifactName: LinuxTests targetPath: $(testsFolder) - task: Bash@3 displayName: Run Tests @@ -356,10 +404,21 @@ stages: displayName: Integration Native strategy: matrix: - Windows: + MacCore: + osName: 'Mac' + testName: 'MacCore' + imageName: 'macos-10.13' + pattern: 'Lidarr.**.osx-core-x64.tar.gz' + WindowsCore: osName: 'Windows' - imageName: 'vs2017-win2016' - pattern: 'Lidarr.**.windows.zip' + testName: 'WindowsCore' + imageName: 'windows-2019' + pattern: 'Lidarr.**.windows-core-x64.zip' + LinuxCore: + osName: 'Linux' + testName: 'LinuxCore' + imageName: 'ubuntu-16.04' + pattern: 'Lidarr.**.linux-core-x64.tar.gz' pool: vmImage: $(imageName) @@ -377,12 +436,13 @@ stages: displayName: 'Install .net core 3.0' inputs: version: $(dotnetVersion) + condition: ne(variables['osName'], 'Windows') - checkout: none - task: DownloadPipelineArtifact@2 displayName: Download Test Artifact inputs: buildType: 'current' - artifactName: '$(osName)Tests' + artifactName: '$(testName)Tests' targetPath: $(testsFolder) - task: DownloadPipelineArtifact@2 displayName: Download Build Artifact @@ -410,7 +470,7 @@ stages: inputs: testResultsFormat: 'NUnit' testResultsFiles: '**/TestResult.xml' - testRunTitle: '$(osName) Integration Tests' + testRunTitle: '$(testName) Integration Tests' failTaskOnFailedTests: true displayName: Publish Test Results @@ -429,7 +489,10 @@ stages: containerImage: servarr/testimages:mono-6.10 mono604: testName: 'Mono 6.4' - containerImage: servarr/testimages:mono-6.12 + containerImage: lidarr/testimages:mono-6.4 + mono606: + testName: 'Mono 6.6' + containerImage: lidarr/testimages:mono-6.6 variables: pattern: 'Lidarr.**.linux.tar.gz' @@ -444,12 +507,17 @@ stages: steps: - bash: mono --version displayName: Check Mono version + - task: UseDotNet@2 + displayName: 'Install .net core 3.0' + inputs: + version: $(dotnetVersion) + condition: ne(variables['osName'], 'Windows') - checkout: none - task: DownloadPipelineArtifact@2 displayName: Download Test Artifact inputs: buildType: 'current' - artifactName: WindowsTests + artifactName: LinuxTests targetPath: $(testsFolder) - task: DownloadPipelineArtifact@2 displayName: Download Build Artifact @@ -466,7 +534,6 @@ stages: - bash: | mkdir -p ./bin/ cp -r -v ${BUILD_ARTIFACTSTAGINGDIRECTORY}/bin/Lidarr/. ./bin/ - ls -lR displayName: Move Package Contents - task: Bash@3 displayName: Run Integration Tests @@ -493,17 +560,17 @@ stages: Linux: osName: 'Linux' imageName: 'ubuntu-16.04' - pattern: 'Lidarr.**.linux.tar.gz' + pattern: 'Lidarr.**.linux-core-x64.tar.gz' failBuild: true Mac: osName: 'Mac' - imageName: 'macos-10.14' # Fails due to firefox not being installed on image - pattern: 'Lidarr.**.osx.tar.gz' + imageName: 'macos-10.13' # Fails due to firefox not being installed on image + pattern: 'Lidarr.**.osx-core-x64.tar.gz' failBuild: false Windows: osName: 'Windows' - imageName: 'vs2017-win2016' - pattern: 'Lidarr.**.windows.zip' + imageName: 'windows-2019' + pattern: 'Lidarr.**.windows-core-x64.zip' failBuild: true pool: @@ -514,12 +581,13 @@ stages: displayName: 'Install .net core 3.0' inputs: version: $(dotnetVersion) + condition: ne(variables['osName'], 'Windows') - checkout: none - task: DownloadPipelineArtifact@2 displayName: Download Test Artifact inputs: buildType: 'current' - artifactName: '$(osName)Tests' + artifactName: '$(osName)CoreTests' targetPath: $(testsFolder) - task: DownloadPipelineArtifact@2 displayName: Download Build Artifact @@ -551,7 +619,6 @@ stages: mv geckodriver _tests displayName: Install Gecko Driver condition: and(succeeded(), ne(variables['osName'], 'Windows')) - - bash: ls -lR - task: Bash@3 displayName: Run Automation Tests inputs: @@ -581,7 +648,7 @@ stages: imageName: 'ubuntu-16.04' Windows: osName: 'Windows' - imageName: 'vs2017-win2016' + imageName: 'windows-2019' pool: vmImage: $(imageName) steps: @@ -600,7 +667,7 @@ stages: - job: Analyze_Frontend displayName: Frontend pool: - vmImage: vs2017-win2016 + vmImage: windows-2019 steps: - checkout: self # Need history for Sonar analysis - task: SonarCloudPrepare@1 @@ -620,10 +687,14 @@ stages: - job: Analyze_Backend displayName: Backend pool: - vmImage: vs2017-win2016 + vmImage: windows-2019 + variables: + disable.coverage.autogenerate: 'true' steps: - checkout: self # Need history for Sonar analysis submodules: true + - powershell: Set-Service SCardSvr -StartupType Manual + displayName: Enable Windows Test Service - task: SonarCloudPrepare@1 inputs: SonarCloud: 'SonarCloud' @@ -635,22 +706,23 @@ stages: extraProperties: | sonar.exclusions=**/obj/**,**/*.dll,**/NzbDrone.Core.Test/Files/**/*,./frontend/**,**/ExternalModules/**,./src/Libraries/** sonar.coverage.exclusions=**/Lidarr.Api.V1/**/*,**/MonoTorrent/**/*,**/Marr.Data/**/* - sonar.cs.opencover.reportsPaths=$(Build.SourcesDirectory)/_tests/CoverageResults/coverage.opencover.xml + sonar.cs.opencover.reportsPaths=$(Build.SourcesDirectory)/CoverageResults/**/coverage.opencover.xml sonar.cs.nunit.reportsPaths=$(Build.SourcesDirectory)/TestResult.xml - - task: DotNetCoreCLI@2 - displayName: Build backend - inputs: - command: 'build' - projects: 'src/Lidarr.Windows.sln' - - task: Bash@3 + - bash: | + ./build.sh --backend -f netcoreapp3.0 -r win-x64 + TEST_DIR=_tests/netcoreapp3.0/win-x64/publish/ ./test.sh Windows Unit Coverage displayName: Coverage Unit Tests + - task: SonarCloudAnalyze@1 + displayName: Publish SonarCloud Results + - task: reportgenerator@4 + displayName: Generate Coverage Report inputs: - targetType: 'filePath' - filePath: ./test.sh - arguments: Windows Unit Coverage + reports: '$(Build.SourcesDirectory)/CoverageResults/**/coverage.opencover.xml' + targetdir: '$(Build.SourcesDirectory)/CoverageResults/combined' + reporttypes: 'HtmlInline_AzurePipelines;Cobertura;Badges' - task: PublishCodeCoverageResults@1 - displayName: Publish Coverage Results + displayName: Publish Coverage Report inputs: codeCoverageTool: 'cobertura' - summaryFileLocation: './_tests/CoverageResults/coverage.cobertura.xml' - - task: SonarCloudAnalyze@1 + summaryFileLocation: './CoverageResults/combined/Cobertura.xml' + reportDirectory: './CoverageResults/combined/' diff --git a/build.sh b/build.sh index 212a3df87..30c74986c 100755 --- a/build.sh +++ b/build.sh @@ -1,23 +1,11 @@ #! /bin/bash -outputFolder='./_output' -testPackageFolder='./_tests/' -sourceFolder='./src' +set -e -#Artifact variables -artifactsFolder="./_artifacts"; - -nuget='tools/nuget/nuget.exe'; +outputFolder='_output' +testPackageFolder='_tests' -CheckExitCode() -{ - "$@" - local status=$? - if [ $status -ne 0 ]; then - echo "error with $1" >&2 - exit 1 - fi - return $status -} +#Artifact variables +artifactsFolder="_artifacts"; ProgressStart() { @@ -33,9 +21,9 @@ UpdateVersionNumber() { if [ "$LIDARRVERSION" != "" ]; then echo "Updating Version Info" - sed -i "s/[0-9.*]\+<\/AssemblyVersion>/$LIDARRVERSION<\/AssemblyVersion>/g" ./src/Directory.Build.props - sed -i "s/[\$()A-Za-z-]\+<\/AssemblyConfiguration>/${BUILD_SOURCEBRANCHNAME}<\/AssemblyConfiguration>/g" ./src/Directory.Build.props - sed -i "s/10.0.0.0<\/string>/$LIDARRVERSION<\/string>/g" ./macOS/Lidarr.app/Contents/Info.plist + sed -i'' -e "s/[0-9.*]\+<\/AssemblyVersion>/$LIDARRVERSION<\/AssemblyVersion>/g" src/Directory.Build.props + sed -i'' -e "s/[\$()A-Za-z-]\+<\/AssemblyConfiguration>/${BUILD_SOURCEBRANCHNAME}<\/AssemblyConfiguration>/g" src/Directory.Build.props + sed -i'' -e "s/10.0.0.0<\/string>/$LIDARRVERSION<\/string>/g" macOS/Lidarr.app/Contents/Info.plist fi } @@ -59,14 +47,14 @@ CleanFolder() LintUI() { ProgressStart 'ESLint' - CheckExitCode yarn lint + yarn lint ProgressEnd 'ESLint' ProgressStart 'Stylelint' if [ "$os" = "windows" ]; then - CheckExitCode yarn stylelint-windows + yarn stylelint-windows else - CheckExitCode yarn stylelint-linux + yarn stylelint-linux fi ProgressEnd 'Stylelint' } @@ -79,14 +67,20 @@ Build() rm -rf $testPackageFolder if [ $os = "windows" ]; then - slnFile=$sourceFolder/Lidarr.Windows.sln + slnFile=src/Lidarr.Windows.sln else - slnFile=$sourceFolder/Lidarr.Posix.sln + slnFile=src/Lidarr.Posix.sln fi - CheckExitCode dotnet clean $slnFile -c Debug - CheckExitCode dotnet clean $slnFile -c Release - CheckExitCode dotnet msbuild -restore $slnFile -p:Configuration=Release -t:PublishAllRids + dotnet clean $slnFile -c Debug + dotnet clean $slnFile -c Release + + if [[ -z "$RID" || -z "$FRAMEWORK" ]]; + then + dotnet msbuild -restore $slnFile -p:Configuration=Release -t:PublishAllRids + else + dotnet msbuild -restore $slnFile -p:Configuration=Release -p:RuntimeIdentifiers=$RID -t:PublishAllRids + fi ProgressEnd 'Build' } @@ -95,14 +89,13 @@ YarnInstall() { ProgressStart 'yarn install' yarn install - #npm-cache install npm || CheckExitCode npm install --no-optional --no-bin-links ProgressEnd 'yarn install' } RunGulp() { ProgressStart 'Running gulp' - CheckExitCode yarn run build --production + yarn run build --production ProgressEnd 'Running gulp' } @@ -127,12 +120,13 @@ PackageFiles() PackageLinux() { local framework="$1" + local runtime="$2" - ProgressStart "Creating Linux Package for $framework" + ProgressStart "Creating $runtime Package for $framework" - local folder=$artifactsFolder/linux/$framework/Lidarr + local folder=$artifactsFolder/$runtime/$framework/Lidarr - PackageFiles "$folder" $framework $runtime "linux-x64" + PackageFiles "$folder" "$framework" "$runtime" echo "Removing Service helpers" rm -f $folder/ServiceUninstall.* @@ -143,8 +137,12 @@ PackageLinux() echo "Adding Lidarr.Mono to UpdatePackage" cp $folder/Lidarr.Mono.* $folder/Lidarr.Update + if [ "$framework" = "netcoreapp3.0" ]; then + cp $folder/Mono.Posix.NETStandard.* $folder/Lidarr.Update + cp $folder/libMonoPosixHelper.* $folder/Lidarr.Update + fi - ProgressEnd "Creating Linux Package for $framework" + ProgressEnd "Creating $runtime Package for $framework" } PackageMacOS() @@ -157,8 +155,10 @@ PackageMacOS() PackageFiles "$folder" "$framework" "osx-x64" - echo "Adding Startup script" - cp ./macOS/Lidarr $folder + if [ "$framework" = "net462" ]; then + echo "Adding Startup script" + cp macOS/Lidarr $folder + fi echo "Removing Service helpers" rm -f $folder/ServiceUninstall.* @@ -169,6 +169,10 @@ PackageMacOS() echo "Adding Lidarr.Mono to UpdatePackage" cp $folder/Lidarr.Mono.* $folder/Lidarr.Update + if [ "$framework" = "netcoreapp3.0" ]; then + cp $folder/Mono.Posix.NETStandard.* $folder/Lidarr.Update + cp $folder/libMonoPosixHelper.* $folder/Lidarr.Update + fi ProgressEnd 'Creating MacOS Package' } @@ -183,7 +187,7 @@ PackageMacOSApp() rm -rf $folder mkdir -p $folder - cp -r ./macOS/Lidarr.app $folder + cp -r macOS/Lidarr.app $folder mkdir -p $folder/Lidarr.app/Contents/MacOS echo "Copying Binaries" @@ -195,36 +199,6 @@ PackageMacOSApp() ProgressEnd 'Creating macOS App Package' } -PackageTests() -{ - ProgressStart 'Creating Test Package' - - cp ./test.sh $testPackageFolder/net462/win-x64/publish - cp ./test.sh $testPackageFolder/net462/linux-x64/publish - cp ./test.sh $testPackageFolder/net462/osx-x64/publish - - if [ $os = "windows" ] ; then - $nuget install NUnit.ConsoleRunner -Version 3.10.0 -Output $testPackageFolder/net462/win-x64/publish - $nuget install NUnit.ConsoleRunner -Version 3.10.0 -Output $testPackageFolder/net462/linux-x64/publish - $nuget install NUnit.ConsoleRunner -Version 3.10.0 -Output $testPackageFolder/net462/osx-x64/publish - else - mono $nuget install NUnit.ConsoleRunner -Version 3.10.0 -Output $testPackageFolder/net462/win-x64/publish - mono $nuget install NUnit.ConsoleRunner -Version 3.10.0 -Output $testPackageFolder/net462/linux-x64/publish - mono $nuget install NUnit.ConsoleRunner -Version 3.10.0 -Output $testPackageFolder/net462/osx-x64/publish - fi - - rm -f $testPackageFolder/*.log.config - - # geckodriver.exe isn't copied by dotnet publish - curl -Lo gecko.zip "https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-win64.zip" - unzip -o gecko.zip - cp geckodriver.exe $testPackageFolder/net462/win-x64/publish - - CleanFolder $testPackageFolder - - ProgressEnd 'Creating Test Package' -} - PackageWindows() { local framework="$1" @@ -237,6 +211,8 @@ PackageWindows() echo "Removing Lidarr.Mono" rm -f $folder/Lidarr.Mono.* + rm -f $folder/Mono.Posix.NETStandard.* + rm -f $folder/libMonoPosixHelper.* echo "Adding Lidarr.Windows to UpdatePackage" cp $folder/Lidarr.Windows.* $folder/Lidarr.Update @@ -244,6 +220,50 @@ PackageWindows() ProgressEnd 'Creating Windows Package' } +Package() +{ + local framework="$1" + local runtime="$2" + local SPLIT + + IFS='-' read -ra SPLIT <<< "$runtime" + + case "${SPLIT[0]}" in + linux) + PackageLinux "$framework" "$runtime" + ;; + win) + PackageWindows "$framework" + ;; + osx) + PackageMacOS "$framework" + PackageMacOSApp "$framework" + ;; + esac +} + +PackageTests() +{ + local framework="$1" + local runtime="$2" + + cp test.sh "$testPackageFolder/$framework/$runtime/publish" + + rm -f $testPackageFolder/$framework/$runtime/*.log.config + + # geckodriver.exe isn't copied by dotnet publish + if [ "$runtime" = "win-x64" ]; + then + curl -Lso gecko.zip "https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-win64.zip" + unzip -o gecko.zip + cp geckodriver.exe "$testPackageFolder/$framework/win-x64/publish" + fi + + CleanFolder "$testPackageFolder/$framework/$runtime" + + ProgressEnd 'Creating Test Package' +} + # Use mono or .net depending on OS case "$(uname -s)" in CYGWIN*|MINGW32*|MINGW64*|MSYS*) @@ -275,6 +295,16 @@ case $key in BACKEND=YES shift # past argument ;; + -r|--runtime) + RID="$2" + shift # past argument + shift # past value + ;; + -f|--framework) + FRAMEWORK="$2" + shift # past argument + shift # past value + ;; --frontend) FRONTEND=YES shift # past argument @@ -306,7 +336,15 @@ if [ "$BACKEND" = "YES" ]; then UpdateVersionNumber Build - PackageTests + if [[ -z "$RID" || -z "$FRAMEWORK" ]]; + then + PackageTests "netcoreapp3.0" "win-x64" + PackageTests "netcoreapp3.0" "linux-x64" + PackageTests "netcoreapp3.0" "osx-x64" + PackageTests "net462" "linux-x64" + else + PackageTests "$FRAMEWORK" "$RID" + fi fi if [ "$FRONTEND" = "YES" ]; @@ -328,8 +366,16 @@ fi if [ "$PACKAGES" = "YES" ]; then UpdateVersionNumber - PackageWindows "net462" - PackageLinux "net462" - PackageMacOS "net462" - PackageMacOSApp "net462" + + if [[ -z "$RID" || -z "$FRAMEWORK" ]]; + then + Package "netcoreapp3.0" "win-x64" + Package "netcoreapp3.0" "linux-x64" + Package "netcoreapp3.0" "linux-arm64" + Package "netcoreapp3.0" "linux-arm" + Package "netcoreapp3.0" "osx-x64" + Package "net462" "linux-x64" + else + Package "$FRAMEWORK" "$RID" + fi fi diff --git a/frontend/src/Components/SignalRConnector.js b/frontend/src/Components/SignalRConnector.js index 171bd859e..437afbbcb 100644 --- a/frontend/src/Components/SignalRConnector.js +++ b/frontend/src/Components/SignalRConnector.js @@ -1,4 +1,4 @@ -import * as signalR from '@aspnet/signalr/dist/browser/signalr.js'; +import * as signalR from '@microsoft/signalr/dist/browser/signalr.js'; import PropTypes from 'prop-types'; import { Component } from 'react'; import { connect } from 'react-redux'; @@ -54,6 +54,37 @@ const mapDispatchToProps = { dispatchFetchTagDetails: fetchTagDetails }; +function Logger(minimumLogLevel) { + this.minimumLogLevel = minimumLogLevel; +} + +Logger.prototype.cleanse = function(message) { + const apikey = new RegExp(`access_token=${window.Lidarr.apiKey}`, 'g'); + return message.replace(apikey, 'access_token=(removed)'); +}; + +Logger.prototype.log = function(logLevel, message) { + // see https://github.com/aspnet/AspNetCore/blob/21c9e2cc954c10719878839cd3f766aca5f57b34/src/SignalR/clients/ts/signalr/src/Utils.ts#L147 + if (logLevel >= this.minimumLogLevel) { + switch (logLevel) { + case signalR.LogLevel.Critical: + case signalR.LogLevel.Error: + console.error(`[signalR] ${signalR.LogLevel[logLevel]}: ${this.cleanse(message)}`); + break; + case signalR.LogLevel.Warning: + console.warn(`[signalR] ${signalR.LogLevel[logLevel]}: ${this.cleanse(message)}`); + break; + case signalR.LogLevel.Information: + console.info(`[signalR] ${signalR.LogLevel[logLevel]}: ${this.cleanse(message)}`); + break; + default: + // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug + console.log(`[signalR] ${signalR.LogLevel[logLevel]}: ${this.cleanse(message)}`); + break; + } + } +}; + class SignalRConnector extends Component { // @@ -71,6 +102,7 @@ class SignalRConnector extends Component { const url = `${window.Lidarr.urlBase}/signalr/messages`; this.connection = new signalR.HubConnectionBuilder() + .configureLogging(new Logger(signalR.LogLevel.Information)) .withUrl(`${url}?access_token=${window.Lidarr.apiKey}`) .withAutomaticReconnect({ nextRetryDelayInMilliseconds: (retryContext) => { diff --git a/frontend/src/Settings/General/GeneralSettings.js b/frontend/src/Settings/General/GeneralSettings.js index 923f7a8d7..da381420c 100644 --- a/frontend/src/Settings/General/GeneralSettings.js +++ b/frontend/src/Settings/General/GeneralSettings.js @@ -97,7 +97,6 @@ class GeneralSettings extends Component { settings, hasSettings, isResettingApiKey, - isMono, isWindows, isWindowsService, isDocker, @@ -163,7 +162,7 @@ class GeneralSettings extends Component { @@ -205,7 +204,6 @@ GeneralSettings.propTypes = { settings: PropTypes.object.isRequired, isResettingApiKey: PropTypes.bool.isRequired, hasSettings: PropTypes.bool.isRequired, - isMono: PropTypes.bool.isRequired, isWindows: PropTypes.bool.isRequired, isWindowsService: PropTypes.bool.isRequired, isDocker: PropTypes.bool.isRequired, diff --git a/frontend/src/Settings/General/GeneralSettingsConnector.js b/frontend/src/Settings/General/GeneralSettingsConnector.js index 1c64b5724..9f2ec7da1 100644 --- a/frontend/src/Settings/General/GeneralSettingsConnector.js +++ b/frontend/src/Settings/General/GeneralSettingsConnector.js @@ -24,7 +24,6 @@ function createMapStateToProps() { return { advancedSettings, isResettingApiKey, - isMono: systemStatus.isMono, isWindows: systemStatus.isWindows, isWindowsService: systemStatus.isWindows && systemStatus.mode === 'service', isDocker: systemStatus.isDocker, diff --git a/frontend/src/Settings/General/HostSettings.js b/frontend/src/Settings/General/HostSettings.js index 8f74cb27a..1fdeb4862 100644 --- a/frontend/src/Settings/General/HostSettings.js +++ b/frontend/src/Settings/General/HostSettings.js @@ -88,7 +88,7 @@ function HostSettings(props) { { - enableSsl.value && + enableSsl.value ? - + : + null } { - enableSsl.value && + enableSsl.value ? - + : + null } { - enableSsl.value && + enableSsl.value ? - + : + null } { diff --git a/frontend/src/Settings/General/UpdateSettings.js b/frontend/src/Settings/General/UpdateSettings.js index d41f95f35..590eb9647 100644 --- a/frontend/src/Settings/General/UpdateSettings.js +++ b/frontend/src/Settings/General/UpdateSettings.js @@ -15,7 +15,7 @@ function UpdateSettings(props) { const { advancedSettings, settings, - isMono, + isWindows, isDocker, onInputChange } = props; @@ -64,7 +64,7 @@ function UpdateSettings(props) { { - isMono && + !isWindows &&
{ - isMono && + !isWindows && { - advancedSettings && isMono && + advancedSettings && !isWindows &&
@@ -445,7 +445,7 @@ MediaManagement.propTypes = { error: PropTypes.object, settings: PropTypes.object.isRequired, hasSettings: PropTypes.bool.isRequired, - isMono: PropTypes.bool.isRequired, + isWindows: PropTypes.bool.isRequired, onSavePress: PropTypes.func.isRequired, onInputChange: PropTypes.func.isRequired }; diff --git a/frontend/src/Settings/MediaManagement/MediaManagementConnector.js b/frontend/src/Settings/MediaManagement/MediaManagementConnector.js index 5a6250392..782505599 100644 --- a/frontend/src/Settings/MediaManagement/MediaManagementConnector.js +++ b/frontend/src/Settings/MediaManagement/MediaManagementConnector.js @@ -22,7 +22,7 @@ function createMapStateToProps() { advancedSettings, ...sectionSettings, hasPendingChanges: !_.isEmpty(namingSettings.pendingChanges) || sectionSettings.hasPendingChanges, - isMono: systemStatus.isMono + isWindows: systemStatus.isWindows }; } ); diff --git a/frontend/src/System/Status/About/About.js b/frontend/src/System/Status/About/About.js index 12ec88157..7751068a9 100644 --- a/frontend/src/System/Status/About/About.js +++ b/frontend/src/System/Status/About/About.js @@ -15,7 +15,8 @@ class About extends Component { render() { const { version, - isMonoRuntime, + isNetCore, + isMono, isDocker, runtimeVersion, migrationVersion, @@ -36,18 +37,26 @@ class About extends Component { /> { - isMonoRuntime && + isMono && } + { + isNetCore && + + } + { isDocker && } @@ -90,7 +99,8 @@ class About extends Component { About.propTypes = { version: PropTypes.string.isRequired, - isMonoRuntime: PropTypes.bool.isRequired, + isNetCore: PropTypes.bool.isRequired, + isMono: PropTypes.bool.isRequired, runtimeVersion: PropTypes.string.isRequired, isDocker: PropTypes.bool.isRequired, migrationVersion: PropTypes.number.isRequired, diff --git a/package.json b/package.json index de74b817a..5d879dac3 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,6 @@ "license": "GPL-3.0", "readmeFilename": "readme.md", "dependencies": { - "@aspnet/signalr": "1.1.4", "@babel/core": "7.5.5", "@babel/plugin-proposal-class-properties": "7.5.5", "@babel/plugin-proposal-decorators": "7.4.4", @@ -39,6 +38,7 @@ "@fortawesome/free-regular-svg-icons": "5.10.2", "@fortawesome/free-solid-svg-icons": "5.10.2", "@fortawesome/react-fontawesome": "0.1.4", + "@microsoft/signalr": "3.0.0", "@sentry/browser": "5.6.3", "@sentry/integrations": "5.6.1", "ansi-colors": "4.1.1", diff --git a/setup/lidarr.iss b/setup/lidarr.iss index e263a8c03..94ad7ac9b 100644 --- a/setup/lidarr.iss +++ b/setup/lidarr.iss @@ -26,7 +26,7 @@ DefaultDirName={commonappdata}\Lidarr\bin DisableDirPage=yes DefaultGroupName={#AppName} DisableProgramGroupPage=yes -OutputBaseFilename=Lidarr.{#BranchName}.{#BuildVersion}.windows +OutputBaseFilename=Lidarr.{#BranchName}.{#BuildVersion}.windows.{#Framework} SolidCompression=yes AppCopyright=Creative Commons 3.0 License AllowUNCPath=False @@ -48,8 +48,8 @@ Name: "startupShortcut"; Description: "Create shortcut in Startup folder (Starts Name: "none"; Description: "Do not start automatically"; GroupDescription: "Start automatically"; Flags: exclusive unchecked [Files] -Source: "..\_artifacts\windows\net462\Lidarr\Lidarr.exe"; DestDir: "{app}"; Flags: ignoreversion -Source: "..\_artifacts\windows\net462\Lidarr\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs +Source: "..\_artifacts\windows\{#Framework}\Lidarr\Lidarr.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\_artifacts\windows\{#Framework}\Lidarr\*"; Excludes: "Lidarr.Update"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 8ea3a8c5f..1b7e14a07 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -5,7 +5,8 @@ AnyCPU true - win-x64;osx-x64;linux-x64 + win-x64;osx-x64;linux-x64;linux-arm;linux-arm64 + win-x64:net462;osx-x64:net462;linux-arm:net462;linux-arm64:net462 $(MSBuildThisFileDirectory)..\ diff --git a/src/Libraries/Interop.NetFwTypeLib.dll b/src/Libraries/Interop.NetFwTypeLib.dll index 7eae191e55b75df9746ed7fad765300e79cb1556..1a809435f2dd7fb0147b725adff69267ad211856 100644 GIT binary patch literal 20992 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 literal 22016 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 F_+PNM2TuS1 diff --git a/src/Libraries/Mono.Posix.dll b/src/Libraries/Mono.Posix.dll deleted file mode 100644 index 8e219445f593bd0c9ac43269d6c156f73501d2e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194048 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ⅇ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%0DqB6h99HlUx@p2xnc$a0MqRepjP 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 G@c#jP>B%_& diff --git a/src/Lidarr.Api.V1/Lidarr.Api.V1.csproj b/src/Lidarr.Api.V1/Lidarr.Api.V1.csproj index 8c605d1f5..fa7dbe8e9 100644 --- a/src/Lidarr.Api.V1/Lidarr.Api.V1.csproj +++ b/src/Lidarr.Api.V1/Lidarr.Api.V1.csproj @@ -1,6 +1,6 @@  - net462 + net462;netcoreapp3.0 @@ -17,6 +17,6 @@ - + diff --git a/src/Lidarr.Api.V1/System/SystemModule.cs b/src/Lidarr.Api.V1/System/SystemModule.cs index 81cf57d34..dfa625b08 100644 --- a/src/Lidarr.Api.V1/System/SystemModule.cs +++ b/src/Lidarr.Api.V1/System/SystemModule.cs @@ -59,7 +59,7 @@ namespace Lidarr.Api.V1.System AppData = _appFolderInfo.GetAppDataPath(), OsName = _osInfo.Name, OsVersion = _osInfo.Version, - IsMonoRuntime = PlatformInfo.IsMono, + IsNetCore = PlatformInfo.IsNetCore, IsMono = PlatformInfo.IsMono, IsLinux = OsInfo.IsLinux, IsOsx = OsInfo.IsOsx, diff --git a/src/Lidarr.Http/Extensions/Pipelines/GZipPipeline.cs b/src/Lidarr.Http/Extensions/Pipelines/GZipPipeline.cs index 26d27aacb..a26c368c3 100644 --- a/src/Lidarr.Http/Extensions/Pipelines/GZipPipeline.cs +++ b/src/Lidarr.Http/Extensions/Pipelines/GZipPipeline.cs @@ -6,7 +6,6 @@ using Nancy; using Nancy.Bootstrapper; using NLog; using NzbDrone.Common.EnvironmentInfo; -using NzbDrone.Common.Extensions; namespace Lidarr.Http.Extensions.Pipelines { @@ -81,7 +80,7 @@ namespace Lidarr.Http.Extensions.Pipelines private static bool ContentLengthIsTooSmall(Response response) { - var contentLength = response.Headers.GetValueOrDefault("Content-Length"); + var contentLength = response.Headers.TryGetValue("Content-Length", out var value) ? value : null; if (contentLength != null && long.Parse(contentLength) < 1024) { @@ -93,7 +92,7 @@ namespace Lidarr.Http.Extensions.Pipelines private static bool AlreadyGzipEncoded(Response response) { - var contentEncoding = response.Headers.GetValueOrDefault("Content-Encoding"); + var contentEncoding = response.Headers.TryGetValue("Content-Encoding", out var value) ? value : null; if (contentEncoding == "gzip") { diff --git a/src/Lidarr.Http/Lidarr.Http.csproj b/src/Lidarr.Http/Lidarr.Http.csproj index d3e46dd94..246994fa0 100644 --- a/src/Lidarr.Http/Lidarr.Http.csproj +++ b/src/Lidarr.Http/Lidarr.Http.csproj @@ -1,6 +1,6 @@  - net462 + net462;netcoreapp3.0 diff --git a/src/Marr.Data/DataMapper.cs b/src/Marr.Data/DataMapper.cs index 51423b988..b8ee4fed0 100644 --- a/src/Marr.Data/DataMapper.cs +++ b/src/Marr.Data/DataMapper.cs @@ -38,15 +38,6 @@ namespace Marr.Data private DbCommand _command; - ///

- /// Initializes a DataMapper for the given provider type and connection string. - /// - /// Ex: - /// The database connection string. - public DataMapper(string providerName, string connectionString) - : this(DbProviderFactories.GetFactory(providerName), connectionString) - { } - /// /// A database provider agnostic initialization. /// diff --git a/src/Marr.Data/Marr.Data.csproj b/src/Marr.Data/Marr.Data.csproj index a1180d1b4..8f92f948d 100644 --- a/src/Marr.Data/Marr.Data.csproj +++ b/src/Marr.Data/Marr.Data.csproj @@ -1,6 +1,6 @@  - net462 + netstandard2.0 3.17.0.0 false diff --git a/src/Marr.Data/Parameters/OleDbTypeBuilder.cs b/src/Marr.Data/Parameters/OleDbTypeBuilder.cs deleted file mode 100644 index d8af140a4..000000000 --- a/src/Marr.Data/Parameters/OleDbTypeBuilder.cs +++ /dev/null @@ -1,68 +0,0 @@ -/* Copyright (C) 2008 - 2011 Jordan Marr - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 3 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library. If not, see . */ - -using System; -using System.Data; -using System.Data.OleDb; - -namespace Marr.Data.Parameters -{ - public class OleDbTypeBuilder : IDbTypeBuilder - { - public Enum GetDbType(Type type) - { - if (type == typeof(String)) - return OleDbType.VarChar; - - if (type == typeof(Int32)) - return OleDbType.Integer; - - if (type == typeof(Decimal)) - return OleDbType.Decimal; - - if (type == typeof(DateTime)) - return OleDbType.DBTimeStamp; - - if (type == typeof(Boolean)) - return OleDbType.Boolean; - - if (type == typeof(Int16)) - return OleDbType.SmallInt; - - if (type == typeof(Int64)) - return OleDbType.BigInt; - - if (type == typeof(Double)) - return OleDbType.Double; - - if (type == typeof(Byte)) - return OleDbType.Binary; - - if (type == typeof(Byte[])) - return OleDbType.VarBinary; - - if (type == typeof(Guid)) - return OleDbType.Guid; - - return OleDbType.Variant; - } - - public void SetDbType(IDbDataParameter param, Enum dbType) - { - var oleDbParam = (OleDbParameter)param; - oleDbParam.OleDbType = (OleDbType)dbType; - } - } -} diff --git a/src/Marr.Data/Parameters/SqlDbTypeBuilder.cs b/src/Marr.Data/Parameters/SqlDbTypeBuilder.cs deleted file mode 100644 index 39d2fdaae..000000000 --- a/src/Marr.Data/Parameters/SqlDbTypeBuilder.cs +++ /dev/null @@ -1,71 +0,0 @@ -/* Copyright (C) 2008 - 2011 Jordan Marr - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 3 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library. If not, see . */ - -using System; -using System.Data; -using System.Data.SqlClient; - -namespace Marr.Data.Parameters -{ - public class SqlDbTypeBuilder : IDbTypeBuilder - { - public Enum GetDbType(Type type) - { - if (type == typeof(String)) - return SqlDbType.VarChar; - - if (type == typeof(Int32)) - return SqlDbType.Int; - - if (type == typeof(Decimal)) - return SqlDbType.Decimal; - - if (type == typeof(DateTime)) - return SqlDbType.DateTime; - - if (type == typeof(Boolean)) - return SqlDbType.Bit; - - if (type == typeof(Int16)) - return SqlDbType.SmallInt; - - if (type == typeof(Int64)) - return SqlDbType.BigInt; - - if (type == typeof(Double)) - return SqlDbType.Float; - - if (type == typeof(Char)) - return SqlDbType.Char; - - if (type == typeof(Byte)) - return SqlDbType.Binary; - - if (type == typeof(Byte[])) - return SqlDbType.VarBinary; - - if (type == typeof(Guid)) - return SqlDbType.UniqueIdentifier; - - return SqlDbType.Variant; - } - - public void SetDbType(IDbDataParameter param, Enum dbType) - { - var sqlDbParam = (SqlParameter)param; - sqlDbParam.SqlDbType = (SqlDbType)dbType; - } - } -} diff --git a/src/MonoTorrent/MonoTorrent.csproj b/src/MonoTorrent/MonoTorrent.csproj index 13621bc33..4d5b70a11 100644 --- a/src/MonoTorrent/MonoTorrent.csproj +++ b/src/MonoTorrent/MonoTorrent.csproj @@ -1,6 +1,6 @@  - net462 + netstandard2.0 9.0.21022 diff --git a/src/NzbDrone.Api.Test/Lidarr.Api.Test.csproj b/src/NzbDrone.Api.Test/Lidarr.Api.Test.csproj index b70ceb000..8e10eea94 100644 --- a/src/NzbDrone.Api.Test/Lidarr.Api.Test.csproj +++ b/src/NzbDrone.Api.Test/Lidarr.Api.Test.csproj @@ -1,10 +1,17 @@  - net462 + net462;netcoreapp3.0 + + + + + + + diff --git a/src/NzbDrone.Automation.Test/Lidarr.Automation.Test.csproj b/src/NzbDrone.Automation.Test/Lidarr.Automation.Test.csproj index 291e37581..ef6bb1850 100644 --- a/src/NzbDrone.Automation.Test/Lidarr.Automation.Test.csproj +++ b/src/NzbDrone.Automation.Test/Lidarr.Automation.Test.csproj @@ -1,8 +1,12 @@  - net462 + net462;netcoreapp3.0 + + + + diff --git a/src/NzbDrone.Common.Test/Http/HttpClientFixture.cs b/src/NzbDrone.Common.Test/Http/HttpClientFixture.cs index 1c7a8ca7a..e062b92c4 100644 --- a/src/NzbDrone.Common.Test/Http/HttpClientFixture.cs +++ b/src/NzbDrone.Common.Test/Http/HttpClientFixture.cs @@ -170,7 +170,7 @@ namespace NzbDrone.Common.Test.Http var response = Subject.Get(request); response.Resource.Headers["Accept-Encoding"].ToString().Should().Be(compression); - response.Headers.ContentLength.Should().BeLessOrEqualTo(response.Content.Length); + response.Resource.Gzipped.Should().BeTrue(); } [TestCase(HttpStatusCode.Unauthorized)] @@ -723,6 +723,7 @@ namespace NzbDrone.Common.Test.Http public string Origin { get; set; } public string Url { get; set; } public string Data { get; set; } + public bool Gzipped { get; set; } } public class HttpCookieResource diff --git a/src/NzbDrone.Common.Test/Lidarr.Common.Test.csproj b/src/NzbDrone.Common.Test/Lidarr.Common.Test.csproj index 8cd5bed59..b6104de09 100644 --- a/src/NzbDrone.Common.Test/Lidarr.Common.Test.csproj +++ b/src/NzbDrone.Common.Test/Lidarr.Common.Test.csproj @@ -1,13 +1,22 @@  - net462 + net462;netcoreapp3.0 + + + + + + + + + - + diff --git a/src/NzbDrone.Common.Test/PathExtensionFixture.cs b/src/NzbDrone.Common.Test/PathExtensionFixture.cs index 04d21dda3..3b0db0f79 100644 --- a/src/NzbDrone.Common.Test/PathExtensionFixture.cs +++ b/src/NzbDrone.Common.Test/PathExtensionFixture.cs @@ -224,7 +224,7 @@ namespace NzbDrone.Common.Test public void get_actual_casing_should_return_actual_casing_for_local_dir_in_windows() { WindowsOnly(); - var path = Directory.GetCurrentDirectory().Replace("c:\\","C:\\").Replace("system32", "System32"); + var path = Directory.GetCurrentDirectory().Replace("c:\\","C:\\").Replace("d:\\","D:\\").Replace("system32", "System32"); path.ToUpper().GetActualCasing().Should().Be(path); path.ToLower().GetActualCasing().Should().Be(path); @@ -281,7 +281,7 @@ namespace NzbDrone.Common.Test [Test] public void GetUpdateClientExePath() { - GetIAppDirectoryInfo().GetUpdateClientExePath(new Version("0.7.1.1381")).Should().BeEquivalentTo(@"C:\Temp\lidarr_update\Lidarr.Update.exe".AsOsAgnostic()); + GetIAppDirectoryInfo().GetUpdateClientExePath(PlatformType.DotNet).Should().BeEquivalentTo(@"C:\Temp\lidarr_update\Lidarr.Update.exe".AsOsAgnostic()); } [Test] diff --git a/src/NzbDrone.Common.Test/ProcessProviderFixture.cs b/src/NzbDrone.Common.Test/ProcessProviderFixture.cs index 8487a8d2a..d00fd9d1b 100644 --- a/src/NzbDrone.Common.Test/ProcessProviderFixture.cs +++ b/src/NzbDrone.Common.Test/ProcessProviderFixture.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Threading; using FluentAssertions; using NUnit.Framework; +using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.Model; using NzbDrone.Common.Processes; using NzbDrone.Test.Common; @@ -123,7 +124,17 @@ namespace NzbDrone.Common.Test { var processStarted = new ManualResetEventSlim(); - var path = Path.Combine(TestContext.CurrentContext.TestDirectory, DummyApp.DUMMY_PROCCESS_NAME + ".exe"); + string suffix; + if (OsInfo.IsWindows || PlatformInfo.IsMono) + { + suffix = ".exe"; + } + else + { + suffix = ""; + } + + var path = Path.Combine(TestContext.CurrentContext.TestDirectory, DummyApp.DUMMY_PROCCESS_NAME + suffix); var process = Subject.Start(path, onOutputDataReceived: (string data) => { if (data.StartsWith("Dummy process. ID:")) { diff --git a/src/NzbDrone.Common.Test/ServiceProviderFixture.cs b/src/NzbDrone.Common.Test/ServiceProviderFixture.cs index ecbc420d6..7039a48c7 100644 --- a/src/NzbDrone.Common.Test/ServiceProviderFixture.cs +++ b/src/NzbDrone.Common.Test/ServiceProviderFixture.cs @@ -4,13 +4,13 @@ using System.ServiceProcess; using FluentAssertions; using NUnit.Framework; using NzbDrone.Common.EnvironmentInfo; +using NzbDrone.Common.Processes; using NzbDrone.Test.Common; using NzbDrone.Test.Common.Categories; namespace NzbDrone.Common.Test { [TestFixture] - [Timeout(15000)] public class ServiceProviderFixture : TestBase { private const string ALWAYS_INSTALLED_SERVICE = "SCardSvr"; //Smart Card @@ -20,6 +20,9 @@ namespace NzbDrone.Common.Test public void Setup() { WindowsOnly(); + + Mocker.SetConstant(Mocker.Resolve()); + CleanupService(); } diff --git a/src/NzbDrone.Common/Composition/ContainerBuilderBase.cs b/src/NzbDrone.Common/Composition/ContainerBuilderBase.cs index 7323c06f9..c23cd077f 100644 --- a/src/NzbDrone.Common/Composition/ContainerBuilderBase.cs +++ b/src/NzbDrone.Common/Composition/ContainerBuilderBase.cs @@ -6,6 +6,12 @@ using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.Messaging; using TinyIoC; +#if NETCOREAPP3_0 +using System.IO; +using System.Runtime.Loader; +using System.Runtime.InteropServices; +#endif + namespace NzbDrone.Common.Composition { public abstract class ContainerBuilderBase @@ -21,15 +27,67 @@ namespace NzbDrone.Common.Composition assemblies.Add(OsInfo.IsWindows ? "Lidarr.Windows" : "Lidarr.Mono"); assemblies.Add("Lidarr.Common"); +#if !NETCOREAPP3_0 foreach (var assembly in assemblies) { _loadedTypes.AddRange(Assembly.Load(assembly).GetTypes()); } +#else + var _startupPath = AppDomain.CurrentDomain.BaseDirectory; + + foreach (var assemblyName in assemblies) + { + _loadedTypes.AddRange(AssemblyLoadContext.Default.LoadFromAssemblyPath(Path.Combine(_startupPath, $"{assemblyName}.dll")).GetTypes()); + } + + AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(ContainerResolveEventHandler); + RegisterSQLiteResolver(); +#endif Container = new Container(new TinyIoCContainer(), _loadedTypes); AutoRegisterInterfaces(); Container.Register(args); - } + } + +#if NETCOREAPP3_0 + private static Assembly ContainerResolveEventHandler(object sender, ResolveEventArgs args) + { + var _resolver = new AssemblyDependencyResolver(args.RequestingAssembly.Location); + var assemblyPath = _resolver.ResolveAssemblyToPath(new AssemblyName(args.Name)); + + if (assemblyPath == null) + { + return null; + } + + return AssemblyLoadContext.Default.LoadFromAssemblyPath(assemblyPath); + } + + public static void RegisterSQLiteResolver() + { + // This ensures we look for sqlite3 using libsqlite3.so.0 on Linux and not libsqlite3.so which + // is less likely to exist. + var sqliteAssembly = AssemblyLoadContext.Default.LoadFromAssemblyPath( + Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "System.Data.SQLite.dll") + ); + + try + { + NativeLibrary.SetDllImportResolver(sqliteAssembly, LoadSqliteNativeLib); + } + catch (InvalidOperationException) + { + // This can only be set once per assembly + // Catch required for NzbDrone.Host tests + } + } + + private static IntPtr LoadSqliteNativeLib(string libraryName, Assembly assembly, DllImportSearchPath? dllImportSearchPath) + { + var mappedName = OsInfo.IsLinux && libraryName == "sqlite3" ? "libsqlite3.so.0" : libraryName; + return NativeLibrary.Load(mappedName, assembly, dllImportSearchPath); + } +#endif private void AutoRegisterInterfaces() { diff --git a/src/NzbDrone.Common/EnvironmentInfo/AppFolderFactory.cs b/src/NzbDrone.Common/EnvironmentInfo/AppFolderFactory.cs index 1b8e38b8c..0a9baa4e3 100644 --- a/src/NzbDrone.Common/EnvironmentInfo/AppFolderFactory.cs +++ b/src/NzbDrone.Common/EnvironmentInfo/AppFolderFactory.cs @@ -74,21 +74,26 @@ namespace NzbDrone.Common.EnvironmentInfo try { - var configHome = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); - if (configHome == "/.config" || + // It seems that DoNotVerify is the mono behaviour even though .net docs specify a blank string + // should be returned if the data doesn't exist. For compatibility with .net core, explicitly + // set DoNotVerify (which makes sense given we're explicitly checking that the folder exists) + var configHome = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData, Environment.SpecialFolderOption.DoNotVerify); + if (configHome.IsNullOrWhiteSpace() || + configHome == "/.config" || configHome.EndsWith("/.config") && !_diskProvider.FolderExists(configHome.GetParentPath()) || !_diskProvider.FolderExists(configHome)) { - // Tell mono to use appData/.config as ApplicationData folder. + // Tell mono/netcore to use appData/.config as ApplicationData folder. Environment.SetEnvironmentVariable("XDG_CONFIG_HOME", Path.Combine(_appFolderInfo.AppDataFolder, ".config")); } - var dataHome = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); - if (dataHome == "/.local/share" || + var dataHome = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData, Environment.SpecialFolderOption.DoNotVerify); + if (dataHome.IsNullOrWhiteSpace() || + dataHome == "/.local/share" || dataHome.EndsWith("/.local/share") && !_diskProvider.FolderExists(dataHome.GetParentPath().GetParentPath()) || !_diskProvider.FolderExists(dataHome)) { - // Tell mono to use appData/.config/share as LocalApplicationData folder. + // Tell mono/netcore to use appData/.config/share as LocalApplicationData folder. Environment.SetEnvironmentVariable("XDG_DATA_HOME", Path.Combine(_appFolderInfo.AppDataFolder, ".config/share")); } } diff --git a/src/NzbDrone.Common/EnvironmentInfo/AppFolderInfo.cs b/src/NzbDrone.Common/EnvironmentInfo/AppFolderInfo.cs index b43199902..8ad24d56c 100644 --- a/src/NzbDrone.Common/EnvironmentInfo/AppFolderInfo.cs +++ b/src/NzbDrone.Common/EnvironmentInfo/AppFolderInfo.cs @@ -34,7 +34,7 @@ namespace NzbDrone.Common.EnvironmentInfo } else { - AppDataFolder = Path.Combine(Environment.GetFolderPath(DATA_SPECIAL_FOLDER, Environment.SpecialFolderOption.None), "Lidarr"); + AppDataFolder = Path.Combine(Environment.GetFolderPath(DATA_SPECIAL_FOLDER, Environment.SpecialFolderOption.DoNotVerify), "Lidarr"); } StartUpFolder = new FileInfo(Assembly.GetExecutingAssembly().Location).Directory.FullName; @@ -47,4 +47,4 @@ namespace NzbDrone.Common.EnvironmentInfo public string TempFolder { get; } } -} \ No newline at end of file +} diff --git a/src/NzbDrone.Common/EnvironmentInfo/PlatformInfo.cs b/src/NzbDrone.Common/EnvironmentInfo/PlatformInfo.cs index c8469ef09..85fdb2f8a 100644 --- a/src/NzbDrone.Common/EnvironmentInfo/PlatformInfo.cs +++ b/src/NzbDrone.Common/EnvironmentInfo/PlatformInfo.cs @@ -9,7 +9,8 @@ namespace NzbDrone.Common.EnvironmentInfo public enum PlatformType { DotNet = 0, - Mono = 1 + Mono = 1, + NetCore = 2 } public interface IPlatformInfo @@ -26,6 +27,10 @@ namespace NzbDrone.Common.EnvironmentInfo static PlatformInfo() { +#if NETCOREAPP3_0 + _platform = PlatformType.NetCore; + _version = new Version("3.0"); +#else if (Type.GetType("Mono.Runtime") != null) { _platform = PlatformType.Mono; @@ -36,11 +41,13 @@ namespace NzbDrone.Common.EnvironmentInfo _platform = PlatformType.DotNet; _version = GetDotNetVersion(); } +#endif } public static PlatformType Platform => _platform; public static bool IsMono => Platform == PlatformType.Mono; public static bool IsDotNet => Platform == PlatformType.DotNet; + public static bool IsNetCore => Platform == PlatformType.NetCore; public static string PlatformName { @@ -50,8 +57,14 @@ namespace NzbDrone.Common.EnvironmentInfo { return ".NET"; } - - return "Mono"; + else if (IsMono) + { + return "Mono"; + } + else + { + return ".NET Core"; + } } } diff --git a/src/NzbDrone.Common/EnvironmentInfo/RuntimeInfo.cs b/src/NzbDrone.Common/EnvironmentInfo/RuntimeInfo.cs index fa017bfe3..bed249ea2 100644 --- a/src/NzbDrone.Common/EnvironmentInfo/RuntimeInfo.cs +++ b/src/NzbDrone.Common/EnvironmentInfo/RuntimeInfo.cs @@ -7,6 +7,10 @@ using System.ServiceProcess; using NLog; using NzbDrone.Common.Processes; +#if NETCOREAPP3_0 +using Microsoft.Extensions.Hosting.WindowsServices; +#endif + namespace NzbDrone.Common.EnvironmentInfo { public class RuntimeInfo : IRuntimeInfo @@ -57,7 +61,12 @@ namespace NzbDrone.Common.EnvironmentInfo } } +#if !NETCOREAPP3_0 public static bool IsUserInteractive => Environment.UserInteractive; +#else + // Note that Environment.UserInteractive is always true on net core: https://stackoverflow.com/a/57325783 + public static bool IsUserInteractive => OsInfo.IsWindows && !WindowsServiceHelpers.IsWindowsService(); +#endif bool IRuntimeInfo.IsUserInteractive => IsUserInteractive; @@ -65,6 +74,11 @@ namespace NzbDrone.Common.EnvironmentInfo { get { + if (OsInfo.IsNotWindows) + { + return false; + } + try { var principal = new WindowsPrincipal(WindowsIdentity.GetCurrent()); diff --git a/src/NzbDrone.Common/Exceptions/ServiceProviderException.cs b/src/NzbDrone.Common/Exceptions/ServiceProviderException.cs new file mode 100644 index 000000000..6c3ec7b15 --- /dev/null +++ b/src/NzbDrone.Common/Exceptions/ServiceProviderException.cs @@ -0,0 +1,29 @@ +using System; + +namespace NzbDrone.Common.Exceptions +{ + public class ServiceProviderException : NzbDroneException + { + public ServiceProviderException(string message, params object[] args) + : base(string.Format(message, args)) + { + + } + + public ServiceProviderException(string message) + : base(message) + { + + } + + public ServiceProviderException(Exception innerException, string message, params object[] args) + : base(string.Format(message, args), innerException) + { + } + + public ServiceProviderException(Exception innerException, string message) + : base(message, innerException) + { + } + } +} diff --git a/src/NzbDrone.Common/Extensions/DictionaryExtensions.cs b/src/NzbDrone.Common/Extensions/DictionaryExtensions.cs index d92005875..646e657aa 100644 --- a/src/NzbDrone.Common/Extensions/DictionaryExtensions.cs +++ b/src/NzbDrone.Common/Extensions/DictionaryExtensions.cs @@ -6,11 +6,13 @@ namespace NzbDrone.Common.Extensions { public static class DictionaryExtensions { - public static TValue GetValueOrDefault(this IDictionary dictionary, TKey key, TValue defaultValue = default(TValue)) +#if !NETCOREAPP3_0 + public static TValue GetValueOrDefault(this IReadOnlyDictionary dictionary, TKey key, TValue defaultValue = default(TValue)) { TValue value; return dictionary.TryGetValue(key, out value) ? value : defaultValue; } +#endif public static Dictionary Merge(this Dictionary first, Dictionary second) { diff --git a/src/NzbDrone.Common/Extensions/GzipExtensions.cs b/src/NzbDrone.Common/Extensions/GzipExtensions.cs new file mode 100644 index 000000000..7dc63d93d --- /dev/null +++ b/src/NzbDrone.Common/Extensions/GzipExtensions.cs @@ -0,0 +1,30 @@ +using System.IO; +using System.IO.Compression; + +namespace NzbDrone.Common.Extensions +{ + public static class GzipExtensions + { + public static byte[] Decompress(this byte[] data) + { + using (var compressedStream = new MemoryStream(data)) + using (var gzip = new GZipStream(compressedStream, CompressionMode.Decompress)) + using (var decompressedStream = new MemoryStream()) + { + gzip.CopyTo(decompressedStream); + return decompressedStream.ToArray(); + } + } + + public static byte[] Compress(this byte[] data) + { + using (var compressedStream = new MemoryStream()) + using (var zipStream = new GZipStream(compressedStream, CompressionMode.Compress)) + { + zipStream.Write(data, 0, data.Length); + zipStream.Close(); + return compressedStream.ToArray(); + } + } + } +} diff --git a/src/NzbDrone.Common/Extensions/PathExtensions.cs b/src/NzbDrone.Common/Extensions/PathExtensions.cs index aa01263de..5591cd731 100644 --- a/src/NzbDrone.Common/Extensions/PathExtensions.cs +++ b/src/NzbDrone.Common/Extensions/PathExtensions.cs @@ -217,12 +217,9 @@ namespace NzbDrone.Common.Extensions return null; } - public static string ProcessNameToExe(this string processName, Version version) + public static string ProcessNameToExe(this string processName, PlatformType runtime) { - // Windows always has exe (but is shunted to net core) - // Linux is kept on mono pending manual upgrade to net core so has .exe - // macOS is shunted to net core and does not have .exe - if (OsInfo.IsWindows || OsInfo.IsLinux || (version.Major == 0 && version.Minor == 7)) + if (OsInfo.IsWindows || runtime != PlatformType.NetCore) { processName += ".exe"; } @@ -230,6 +227,11 @@ namespace NzbDrone.Common.Extensions return processName; } + public static string ProcessNameToExe(this string processName) + { + return processName.ProcessNameToExe(PlatformInfo.Platform); + } + public static string GetAppDataPath(this IAppFolderInfo appFolderInfo) { return appFolderInfo.AppDataFolder; @@ -290,9 +292,9 @@ namespace NzbDrone.Common.Extensions return Path.Combine(GetUpdatePackageFolder(appFolderInfo), UPDATE_CLIENT_FOLDER_NAME); } - public static string GetUpdateClientExePath(this IAppFolderInfo appFolderInfo, Version version) + public static string GetUpdateClientExePath(this IAppFolderInfo appFolderInfo, PlatformType runtime) { - return Path.Combine(GetUpdateSandboxFolder(appFolderInfo), UPDATE_CLIENT_EXE_NAME).ProcessNameToExe(version); + return Path.Combine(GetUpdateSandboxFolder(appFolderInfo), UPDATE_CLIENT_EXE_NAME).ProcessNameToExe(runtime); } public static string GetDatabase(this IAppFolderInfo appFolderInfo) diff --git a/src/NzbDrone.Common/Http/Dispatchers/ManagedHttpDispatcher.cs b/src/NzbDrone.Common/Http/Dispatchers/ManagedHttpDispatcher.cs index 7cd8e6d9b..44bbeea8b 100644 --- a/src/NzbDrone.Common/Http/Dispatchers/ManagedHttpDispatcher.cs +++ b/src/NzbDrone.Common/Http/Dispatchers/ManagedHttpDispatcher.cs @@ -1,6 +1,5 @@ using System; using System.IO; -using System.IO.Compression; using System.Net; using System.Reflection; using NLog; @@ -125,14 +124,7 @@ namespace NzbDrone.Common.Http.Dispatchers if (PlatformInfo.IsMono && httpWebResponse.ContentEncoding == "gzip") { - using (var compressedStream = new MemoryStream(data)) - using (var gzip = new GZipStream(compressedStream, CompressionMode.Decompress)) - using (var decompressedStream = new MemoryStream()) - { - gzip.CopyTo(decompressedStream); - data = decompressedStream.ToArray(); - } - + data = data.Decompress(); httpWebResponse.Headers.Remove("Content-Encoding"); } } diff --git a/src/NzbDrone.Common/Lidarr.Common.csproj b/src/NzbDrone.Common/Lidarr.Common.csproj index f4a5572d0..33eb2aaf7 100644 --- a/src/NzbDrone.Common/Lidarr.Common.csproj +++ b/src/NzbDrone.Common/Lidarr.Common.csproj @@ -1,6 +1,6 @@  - net462 + net462;netcoreapp3.0 @@ -8,12 +8,18 @@ - + - - + + + + + + + + diff --git a/src/NzbDrone.Common/ServiceProvider.cs b/src/NzbDrone.Common/ServiceProvider.cs index 2819c2736..0e788e79f 100644 --- a/src/NzbDrone.Common/ServiceProvider.cs +++ b/src/NzbDrone.Common/ServiceProvider.cs @@ -1,10 +1,9 @@ using System; -using System.Collections.Specialized; -using System.Configuration.Install; using System.Diagnostics; using System.Linq; using System.ServiceProcess; using NLog; +using NzbDrone.Common.Exceptions; using NzbDrone.Common.Extensions; using NzbDrone.Common.Processes; @@ -62,30 +61,36 @@ namespace NzbDrone.Common public virtual void Install(string serviceName) { - _logger.Info("Installing service '{0}'", serviceName); + _logger.Info("Installing service '{0}'", serviceName); - var installer = new ServiceProcessInstaller - { - Account = ServiceAccount.LocalService - }; + var args = $"create {serviceName} " + + $"DisplayName= \"{serviceName}\" " + + $"binpath= \"{Process.GetCurrentProcess().MainModule.FileName}\" " + + "start= auto " + + "depend= EventLog/Tcpip/http " + + "obj= \"NT AUTHORITY\\LocalService\""; - var serviceInstaller = new ServiceInstaller(); + _logger.Info(args); + var installOutput = _processProvider.StartAndCapture("sc.exe", args); - string[] cmdline = { @"/assemblypath=" + Process.GetCurrentProcess().MainModule.FileName }; + if (installOutput.ExitCode != 0) + { + _logger.Error($"Failed to install service: {installOutput.Lines.Select(x => x.Content).ConcatToString("\n")}"); + throw new ServiceProviderException("Failed to install service"); + } - var context = new InstallContext("service_install.log", cmdline); - serviceInstaller.Context = context; - serviceInstaller.DisplayName = serviceName; - serviceInstaller.ServiceName = serviceName; - serviceInstaller.Description = "Lidarr Application Server"; - serviceInstaller.StartType = ServiceStartMode.Automatic; - serviceInstaller.ServicesDependedOn = new[] { "EventLog", "Tcpip", "http" }; + _logger.Info(installOutput.Lines.Select(x => x.Content).ConcatToString("\n")); - serviceInstaller.Parent = installer; + var descOutput = _processProvider.StartAndCapture("sc.exe", $"description {serviceName} \"Lidarr Application Server\""); + if (descOutput.ExitCode != 0) + { + _logger.Error($"Failed to install service: {descOutput.Lines.Select(x => x.Content).ConcatToString("\n")}"); + throw new ServiceProviderException("Failed to install service"); + } - serviceInstaller.Install(new ListDictionary()); + _logger.Info(descOutput.Lines.Select(x => x.Content).ConcatToString("\n")); _logger.Info("Service Has installed successfully."); } @@ -96,12 +101,8 @@ namespace NzbDrone.Common Stop(serviceName); - var serviceInstaller = new ServiceInstaller(); - - var context = new InstallContext("service_uninstall.log", null); - serviceInstaller.Context = context; - serviceInstaller.ServiceName = serviceName; - serviceInstaller.Uninstall(null); + var output = _processProvider.StartAndCapture("sc.exe", $"delete {serviceName}"); + _logger.Info(output.Lines.Select(x => x.Content).ConcatToString("\n")); _logger.Info("{0} successfully uninstalled", serviceName); } diff --git a/src/NzbDrone.Console/Lidarr.Console.csproj b/src/NzbDrone.Console/Lidarr.Console.csproj index 8ffeed355..52f785be5 100644 --- a/src/NzbDrone.Console/Lidarr.Console.csproj +++ b/src/NzbDrone.Console/Lidarr.Console.csproj @@ -1,7 +1,7 @@  Exe - net462 + net462;netcoreapp3.0 ..\NzbDrone.Host\NzbDrone.ico app.manifest diff --git a/src/NzbDrone.Core.Test/Download/DownloadServiceFixture.cs b/src/NzbDrone.Core.Test/Download/DownloadServiceFixture.cs index 38df5626d..4ba13fd85 100644 --- a/src/NzbDrone.Core.Test/Download/DownloadServiceFixture.cs +++ b/src/NzbDrone.Core.Test/Download/DownloadServiceFixture.cs @@ -163,7 +163,7 @@ namespace NzbDrone.Core.Test.Download Mocker.GetMock() .Verify(v => v.RecordFailure(It.IsAny(), - It.IsInRange(TimeSpan.FromMinutes(4.9), TimeSpan.FromMinutes(5.1), Range.Inclusive)), Times.Once()); + It.IsInRange(TimeSpan.FromMinutes(4.9), TimeSpan.FromMinutes(5.1), Moq.Range.Inclusive)), Times.Once()); } [Test] diff --git a/src/NzbDrone.Core.Test/Files/Fingerprinting/AcoustidResponses.json b/src/NzbDrone.Core.Test/Files/Fingerprinting/AcoustidResponses.json index 729492cbd..d3d4a9d5a 100644 --- a/src/NzbDrone.Core.Test/Files/Fingerprinting/AcoustidResponses.json +++ b/src/NzbDrone.Core.Test/Files/Fingerprinting/AcoustidResponses.json @@ -1,26 +1,30 @@ [ { - "requestContent": "1F-8B-08-00-00-00-00-00-00-03-15-54-CB-B6-B2-BC-12-7C-9B-6F-C6-59-5E-22-C2-60-0F-72-83-84-8B-21-20-2A-4E-58-8A-40-40-11-B7-BA-0D-F2-F4-3F-27-C3-4E-52-D5-5D-55-AB-8B-5B-53-DE-DF-3F-12-6E-2E-A6-D5-36-F3-E0-5F-D5-3F-BB-D3-FB-A7-7D-F5-F7-7F-5D-F9-3E-FD-3C-CB-A2-7F-5E-9A-7B-DD-5C-5E-FF-CE-A7-77-A1-7E-E6-FF-2E-7F-CF-D3-BB-E9-EF-FF-9B-FD-58-AB-7F-D5-74-5B-3E-1F-CF-E6-FE-9E-0A-50-42-DC-F5-5D-E2-D1-6F-12-6F-78-C2-F0-C9-1C-89-32-85-C8-55-9F-56-4F-60-15-1F-46-AC-A5-E1-C1-47-16-98-8E-D5-E3-90-7D-6E-35-30-7F-05-CB-AA-35-98-05-E6-E9-55-6C-F2-AA-9D-69-65-CF-4E-64-21-30-98-3B-D8-A0-43-35-E3-9F-08-F9-5F-66-FE-6E-84-1B-D0-FA-89-86-03-5E-6A-10-36-0E-5A-78-86-81-8B-12-14-D9-E1-11-68-F7-40-63-13-C4-6C-90-C3-76-0E-16-A5-E7-84-65-00-66-75-CE-92-73-AA-D6-CA-1C-C4-46-FD-91-A3-B1-DA-3C-06-E7-F9-D0-15-7E-26-3D-78-B4-39-F5-32-D6-97-EA-33-B6-25-2B-CE-77-E2-F6-82-2D-67-FB-88-66-25-1D-97-03-5F-2F-A2-D9-2B-88-37-13-36-B0-39-CA-F9-61-00-79-C3-56-5F-C7-60-E2-32-2C-9C-9E-5A-F1-CA-60-E1-42-79-9D-70-4C-E5-24-87-B1-89-D8-E5-3D-74-41-27-57-2F-3F-63-63-FF-E7-B4-B7-B0-BF-56-02-DD-8B-D7-89-DA-F3-2E-EA-65-1E-16-EF-2D-FE-8D-0F-36-A6-F7-B1-11-F9-A8-0A-1C-5D-F3-48-74-A2-1F-AD-BF-B9-2F-A4-69-34-EA-34-D6-27-A6-6D-71-8A-6E-03-FC-74-7E-45-54-FA-28-F6-2C-0F-37-67-F4-34-48-3F-2B-33-B6-7E-18-AB-E8-D7-89-D2-33-59-6D-FD-45-6F-3E-66-79-58-46-16-2F-84-9E-15-06-B3-CA-F8-38-E0-36-BE-37-D4-62-75-A4-6E-BE-3F-FC-76-57-D0-DE-4F-8D-E5-1D-91-B0-93-28-3C-FD-39-B4-14-6C-28-85-D3-E6-C6-E6-55-3B-97-13-1B-F8-38-58-51-38-CA-F8-25-AB-38-00-2E-FB-F4-CD-26-B8-EB-03-31-FF-A0-E1-0D-39-69-42-60-EC-D5-EA-8E-D2-49-1E-EB-43-C3-37-7A-9B-33-BD-D7-72-D9-A9-75-FF-A1-F3-08-77-27-16-5E-06-1B-36-22-B4-12-E7-10-56-3B-9C-F7-DB-9E-DC-4C-F0-FA-4D-5E-55-B3-41-FF-C7-C8-9B-2D-18-2A-83-58-17-65-46-ED-00-23-13-47-56-D5-CA-CA-AE-55-38-33-6D-9E-55-7A-A8-2C-BC-2A-E4-45-17-07-BC-32-70-B4-69-22-60-ED-91-AF-F2-06-D8-64-03-C8-68-62-6B-11-0F-56-27-D9-DA-D0-F5-78-7B-AD-76-64-BC-47-6A-04-11-1A-72-08-9F-C6-84-BD-43-2C-45-C6-89-C9-DB-65-D1-EF-2B-29-C8-5D-F4-7E-11-1C-D6-CD-1E-54-0C-39-45-35-B0-48-D4-93-D0-EF-9C-B5-D4-23-FD-AF-5D-F8-0C-80-FB-57-7E-2B-DC-A2-B2-DC-A1-08-EC-68-5A-7D-F8-47-73-FE-57-A6-D9-7E-EB-7D-1A-87-E5-B7-21-9F-B4-94-6B-ED-CE-5F-CD-59-6F-DC-60-DD-AB-DC-74-47-B9-75-7D-7E-75-3A-13-60-6A-CC-B7-4D-C6-72-53-EC-D9-41-E7-44-19-0B-32-F9-B6-AD-63-B0-EC-C4-A1-15-E2-2A-5C-75-BC-F8-2C-62-0D-FF-D4-DF-05-CB-67-83-77-7B-C9-29-33-7F-C0-AA-37-79-DE-C4-AB-BC-45-AC-5D-A7-A6-6E-76-EF-6F-6B-F7-65-27-46-2B-88-73-74-32-78-68-ED-0E-24-C2-DE-3C-42-F1-25-8C-BF-AA-B4-4E-D9-D1-60-D1-32-06-56-85-3E-17-5C-B2-D0-8E-D7-F2-53-02-4B-BD-FF-C2-3E-99-95-4D-6C-E4-ED-D0-93-6B-16-B4-7D-E9-D9-24-4D-F3-06-82-F1-09-C0-58-16-20-A7-22-2A-2E-DB-12-36-67-90-C6-51-14-E0-E8-FE-2A-EF-4D-1A-CC-88-C9-12-56-D9-43-3F-2E-35-FA-3A-EB-25-2F-8C-1D-CC-8D-2A-53-79-19-69-99-17-EE-4D-12-E3-F4-30-5A-C2-04-7D-1C-E8-66-AF-9F-F4-1B-85-E5-9C-5B-65-C4-C6-FC-2B-47-C3-22-53-FC-9E-FC-3C-F6-EB-3F-C7-E0-C5-5F-AF-AE-C7-03-7A-7C-99-65-B7-77-E8-39-13-CB-8A-44-76-BC-AA-D4-CC-21-4F-04-16-9D-7B-1A-5B-E3-7C-56-A3-49-F4-49-B9-89-FF-3B-CD-E0-EA-61-69-50-FE-3A-DF-95-A1-2F-99-00-59-32-71-58-42-BE-C6-21-0A-93-48-BD-AA-25-9B-32-38-6E-71-AC-F4-D3-AC-E7-D5-10-C1-B2-05-E0-3D-54-81-D2-A6-D7-44-CD-AB-3A-83-40-8D-37-F2-9D-1D-89-6A-57-9B-5F-DE-2F-0D-9D-A7-D0-C4-F7-85-EB-5F-4D-C5-DE-05-9C-B2-E6-31-50-90-4D-72-2D-59-62-7F-99-9D-0F-A0-F8-4A-F3-CB-CB-2E-5C-0D-A8-AC-06-9B-E1-5F-77-6B-08-36-0E-E2-44-74-59-05-95-7E-A0-EA-3B-ED-BB-28-B7-F1-B1-B7-AC-D7-9D-46-82-DD-0C-CA-EE-40-86-C9-C5-38-C0-CD-62-EA-C9-62-17-74-63-76-12-3C-C7-CE-64-CC-50-FE-EC-B2-EA-F0-53-F4-AD-6D-84-61-B9-54-4F-F5-2D-22-1A-B7-DA-36-B2-A2-F1-D8-30-81-5A-C5-F6-15-7F-84-5E-09-C1-DA-47-9B-CD-C1-97-B6-B3-6F-71-46-C3-31-3D-D0-1D-43-8B-15-7A-86-20-2C-84-C2-5A-63-4C-EA-76-5A-EA-0E-17-3D-E4-1C-73-99-40-D9-20-E2-D0-00-D2-53-96-86-E1-1B-FA-75-9A-40-8C-EE-B1-47-25-75-31-2C-61-1F-C7-5C-CA-5B-E3-C0-D7-2E-73-5D-E1-F3-82-66-10-F2-5D-5C-B7-35-F4-C8-C6-F5-33-9C-A2-9A-73-3F-D0-03-9E-D2-8A-77-C4-A5-38-FB-83-2F-0F-4D-EB-2C-41-CA-55-18-62-D7-F7-05-A5-69-CA-01-84-03-83-57-87-49-0A-E5-BE-94-1E-CC-78-E6-CA-14-D6-08-D5-1B-17-86-90-CA-10-A2-D8-D3-32-21-8B-1A-BB-90-87-50-A4-3C-53-12-F9-1A-B5-08-FB-DD-0D-73-04-21-4E-B3-2E-F3-8E-70-56-C7-A4-46-98-10-BD-97-45-0C-A7-13-7B-03-C4-BD-F3-87-20-12-D3-3B-AE-6F-D9-4A-02-A4-25-A4-53-CF-24-F3-8F-AE-D4-7D-CD-BF-52-27-10-39-9D-43-18-C1-D0-87-69-A8-FB-3E-9B-44-42-B4-86-38-A2-90-8A-B8-90-12-9C-20-AC-19-8A-D1-C3-71-42-8A-D3-3E-F5-E4-F1-05-60-9C-20-EA-D4-29-F3-45-EA-42-98-C9-95-1C-A0-FC-42-07-12-72-9B-B4-F4-C3-14-72-89-86-87-6C-11-09-38-DA-60-E8-FA-2F-8E-64-1C-CB-24-D1-ED-D5-B9-E2-88-50-41-25-4F-B5-EF-79-CD-57-43-A2-DE-CC-9D-FC-98-7A-41-30-19-E2-18-0D-A8-C6-C4-41-D0-CF-F6-10-5E-F9-44-23-25-82-D7-00-39-14-FA-94-97-03-CD-06-99-29-07-D5-AA-81-94-50-8C-21-0A-E5-34-B5-9A-4F-F6-C2-E9-F3-B4-BB-69-7A-9C-4A-50-3F-86-0C-12-67-84-1C-52-2E-A9-BE-42-C9-A1-A7-F4-F7-46-6F-8A-6F-12-11-52-0A-B5-AE-6B-6F-97-C0-96-B5-35-92-9C-16-A1-2C-52-18-23-2F-DE-5A-D0-47-F5-E4-90-EB-87-1C-22-3E-F1-EE-B4-82-18-3A-67-1F-C2-94-C2-A2-80-31-D0-5D-7C-83-2D-6E-28-75-43-77-8A-0B-94-D9-11-27-78-8B-F9-1D-C9-FF-00-37-12-B7-2F-AA-08-00-00", + "request": "client=QANd68ji1L&format=json&meta=recordingids&batch=1&duration.0=85&fingerprint.0=AQACmomSJEySRNISHCa6zDh6OO_hoUfr48cvHD83-JApYL6F8oCMHvlg46qOHYf740L6ascN_fj0wh90aD2OC41FC-Exf0IvPBKyH6qNOGLEgrBxXC3w4MiFB2J--Cce4cYXpLwGXER64RHxQxT142eJFMeL40g_HSbUh7h6xONhuDZ-5NpxFrpwfCrSo4pj_EJYHoehvzjeHcbnDGoOH30WPEYeEz3xI72P0sLRNRHx49IB_IXx4_iH5yF-HOdx2FoE8R5-HM2hJmOF6hFSXziPHdtxmLmQ5sKYHzouFjlMokfOBncsaE91mPoQ_MctTCqRX9CEnziO_zhcCPk_POmOoz8u1KOQ6-ihazgaHw9OaPlxAvmKfDhUpcWH_MNbBr-Do0eYH7p-5PqFPUbD5TK2o6p0_MeP8IcOw0c-H8eRZxCjRniE8HgPhlKKxqmk4jnai8JZBO9SPMauFEeOHxeOFj_-NsgFdaHxIzx8PMzQRsQfRL4GHvoiNLnwXD6uA-Jx_DiM4-Wh5nBUIXx8vEMtBt60wWwQ3mh7ovE1PCmaHMdx9AiOM8SFXMfVC_oToDl64sqSsfiNB-Wh5_iT4xf-D8dh6PjxAP6CP8fjQf9ghM069IYfwxf8C5cQdwcXC5-CPNiP48WBKh_i49DN4Dz6C82Rx8mQH7-wgzls5VDznPhz4PBx_AAr-PjxVBHUB-aHQld2oWfQODnOoKcLX7iW4fHBFcfxHPOgH_Mt_HjEJDoq9cKH44nyQyfCjBeeVBP4VEUfvIvwIIueUYWTJviFH_lx_EeOQ7wG1sibwNGL7oh_6GzQTGKIkFm64CE-1TiYH_6OWHXw_Dh-2Dp0_TgR43mOXjOOkOGhZdKHPHiIvgy2H_0xJlsQX9Cu48gN__iR5_jBHj7U6wiVtyj9oemOz8LR_Ba-IM8VXDPCJ1PBRdMRyhe8aYZ-HP3R48fBvdCeHM9R7Qve48htuMoS0eiR-_jxoDkYLjoeJ9DUU_iA4zr44zec4_EOPcdTeAib4URPPLCPnseniUL0D6HSHf9xoz3wByF73Ic-VA_-fYh_ePwQ_cGlQD-ap-jDHOEpXENWwrEyPMe1I8ePHz_yQz-8D_-NrIbzo7uF-IcuohkZXBpyH89jnAJFHSH5DP9R5fh0FDrB42mGazj-bbhz6DwahGSKq_jxGwx3-EIsbnh-wdYO4YSPHz8OQszxPMSPhsf3HDl6zTCRhwr6g1fxPAej44txfLhw6JiPisfb4LhzlDy0ZDhj5NqIo3-w_UA6Cn2GKk6hHtcAH7-JH4cDNSkeHS9yH9_x4cyQ6yIemM5xBefx9HCqGT-OHzxOaDwefLfwpBfyC-EP_9CZo88snEPOHl-EHn4QMSd-XAN2PAe8HdBlH9SLrzm6HH-hK0d5mCrOoj9-MMe3hrhycPERjw9-YciJHx-EP8cTsRvOw5OOHjpjY14yEj0ycbBxZUXEVHB25BrM4McOhCwwCCDgjAQAFIOoAIICIQSAQiBDFELAEaYUMMtAKgUSACBnRJEQEGCAeAoRRIQQliFAsVYGGOKIcEYAAIVRgjgAJDNGKYCUBgIIKLwxCBHjCVDGECYuAsJBDhUSBhGhCACGKKOEEUUI4AAxHAkFHQEAQWeQJAYIYGQUAgBBgNGAMAEQMABRJwQSD2gCGAIMAOUIYhQBKwBjBCKmlCIBAACUYmYJZA0gRDgBCDDwWQcRAAAARJxACoFuBABOAACIwlY5Q4BwQAEAJDDYKZGQwogIyQwSABFmFDHDCAKAUMwooYAQABEgACPEAEORcQQ4aAAgHBRBpFFMECUoUJQZs4ARSBEFgUHKOUGAAYQ5QxAQyAFADDlAKgKMUAIQBxpQjBDLIBNCAGKsIBQRRQSSwjkFkCPDEOEQIUwKJJiywADhtHGAEaKAUBASxRRBxBgCDFBAKYWAAkIAYQQQBAkLBFEAKEIexEYxQYhFBghiAEDECCABMQAACh1QiBAgCDBUIEUZQAAAwpxYADFzAIAEIQEwkAQIAJhwylElhINSOMEEAwwggJVSAjHjgBQIEcMQcUARBJRT8AKBgAMAGKMIABIxQYVwhACAFbKAAUEAccAR4wmRlAjCiEEGMGIcEAQYZCSCTCInBQ", "response": "{\"fingerprints\": [{\"index\": \"0\", \"results\": [{\"id\": \"a9b004fe-e161-417c-9f9e-443e4525334d\", \"recordings\": [{\"id\": \"209a4536-97ac-4e8a-aff1-1d39d029044b\"}, {\"id\": \"30f3f33e-8d0c-4e69-8539-cbd701d18f28\"}], \"score\": 0.940997}, {\"id\": \"fe0a9bec-2633-4c37-89be-b5d295b68a00\", \"score\": 0.763876}, {\"id\": \"18eab869-51dc-4948-83f7-4d8d441d5a1b\", \"score\": 0.490447}]}], \"status\": \"ok\"}" }, { - "requestContent": "1F-8B-08-00-00-00-00-00-00-03-15-54-CB-B6-B2-BC-12-7C-9B-6F-C6-59-5E-22-C2-60-0F-72-83-84-8B-21-20-2A-4E-58-8A-40-40-11-B7-BA-0D-F2-F4-3F-27-C3-4E-52-D5-5D-55-AB-8B-5B-53-DE-DF-3F-12-6E-2E-A6-D5-36-F3-E0-5F-D5-3F-BB-D3-FB-A7-7D-F5-F7-7F-5D-F9-3E-FD-3C-CB-A2-7F-5E-9A-7B-DD-5C-5E-FF-CE-A7-77-A1-7E-E6-FF-2E-7F-CF-D3-BB-E9-EF-FF-9B-FD-58-AB-7F-D5-74-5B-3E-1F-CF-E6-FE-9E-0A-50-42-DC-F5-5D-E2-D1-6F-12-6F-78-C2-F0-C9-1C-89-32-85-C8-55-9F-56-4F-60-15-1F-46-AC-A5-E1-C1-47-16-98-8E-D5-E3-90-7D-6E-35-30-7F-05-CB-AA-35-98-05-E6-E9-55-6C-F2-AA-9D-69-65-CF-4E-64-21-30-98-3B-D8-A0-43-35-E3-9F-08-F9-5F-66-FE-6E-84-1B-D0-FA-89-86-03-5E-6A-10-36-0E-5A-78-86-81-8B-12-14-D9-E1-11-68-F7-40-63-13-C4-6C-90-C3-76-0E-16-A5-E7-84-65-00-66-75-CE-92-73-AA-D6-CA-1C-C4-46-FD-91-A3-B1-DA-3C-06-E7-F9-D0-15-7E-26-3D-78-B4-39-F5-32-D6-97-EA-33-B6-25-2B-CE-77-E2-F6-82-2D-67-FB-88-66-25-1D-97-03-5F-2F-A2-D9-2B-88-37-13-36-B0-39-CA-F9-61-00-79-C3-56-5F-C7-60-E2-32-2C-9C-9E-5A-F1-CA-60-E1-42-79-9D-70-4C-E5-24-87-B1-89-D8-E5-3D-74-41-27-57-2F-3F-63-63-FF-E7-B4-B7-B0-BF-56-02-DD-8B-D7-89-DA-F3-2E-EA-65-1E-16-EF-2D-FE-8D-0F-36-A6-F7-B1-11-F9-A8-0A-1C-5D-F3-48-74-A2-1F-AD-BF-B9-2F-A4-69-34-EA-34-D6-27-A6-6D-71-8A-6E-03-FC-74-7E-45-54-FA-28-F6-2C-0F-37-67-F4-34-48-3F-2B-33-B6-7E-18-AB-E8-D7-89-D2-33-59-6D-FD-45-6F-3E-66-79-58-46-16-2F-84-9E-15-06-B3-CA-F8-38-E0-36-BE-37-D4-62-75-A4-6E-BE-3F-FC-76-57-D0-DE-4F-8D-E5-1D-91-B0-93-28-3C-FD-39-B4-14-6C-28-85-D3-E6-C6-E6-55-3B-97-13-1B-F8-38-58-51-38-CA-F8-25-AB-38-00-2E-FB-F4-CD-26-B8-EB-03-31-FF-A0-E1-0D-39-69-42-60-EC-D5-EA-8E-D2-49-1E-EB-43-C3-37-7A-9B-33-BD-D7-72-D9-A9-75-FF-A1-F3-08-77-27-16-5E-06-1B-36-22-B4-12-E7-10-56-3B-9C-F7-DB-9E-DC-4C-F0-FA-4D-5E-55-B3-41-FF-C7-C8-9B-2D-18-2A-83-58-17-65-46-ED-00-23-13-47-56-D5-CA-CA-AE-55-38-33-6D-9E-55-7A-A8-2C-BC-2A-E4-45-17-07-BC-32-70-B4-69-22-60-ED-91-AF-F2-06-D8-64-03-C8-68-62-6B-11-0F-56-27-D9-DA-D0-F5-78-7B-AD-76-64-BC-47-6A-04-11-1A-72-08-9F-C6-84-BD-43-2C-45-C6-89-C9-DB-65-D1-EF-2B-29-C8-5D-F4-7E-11-1C-D6-CD-1E-54-0C-39-45-35-B0-48-D4-93-D0-EF-9C-B5-D4-23-FD-AF-5D-F8-0C-80-FB-57-7E-2B-DC-A2-B2-DC-A1-08-EC-68-5A-7D-F8-47-73-FE-57-A6-D9-7E-EB-7D-1A-87-E5-B7-21-9F-B4-94-6B-ED-CE-5F-CD-59-6F-DC-60-DD-AB-DC-74-47-B9-75-7D-7E-75-3A-13-60-6A-CC-B7-4D-C6-72-53-EC-D9-41-E7-44-19-0B-32-F9-B6-AD-63-B0-EC-C4-A1-15-E2-2A-5C-75-BC-F8-2C-62-0D-FF-D4-DF-05-CB-67-83-77-7B-C9-29-33-7F-C0-AA-37-79-DE-C4-AB-BC-45-AC-5D-A7-A6-6E-76-EF-6F-6B-F7-65-27-46-2B-88-73-74-32-78-68-ED-0E-24-C2-DE-3C-42-F1-25-8C-BF-AA-B4-4E-D9-D1-60-D1-32-06-56-85-3E-17-5C-B2-D0-8E-D7-F2-53-02-4B-BD-FF-C2-3E-99-95-4D-6C-E4-ED-D0-93-6B-16-B4-7D-E9-D9-24-4D-F3-06-82-F1-09-C0-58-16-20-A7-22-2A-2E-DB-12-36-67-90-C6-51-14-E0-E8-FE-2A-EF-4D-1A-CC-88-C9-12-56-D9-43-3F-2E-35-FA-3A-EB-25-2F-8C-1D-CC-8D-2A-53-79-19-69-99-17-EE-4D-12-E3-F4-30-5A-C2-04-7D-1C-E8-66-AF-9F-F4-1B-85-E5-9C-5B-65-C4-C6-FC-2B-47-C3-22-53-FC-9E-FC-3C-F6-EB-3F-C7-E0-C5-5F-AF-AE-C7-03-7A-7C-99-65-B7-77-E8-39-13-CB-8A-44-76-BC-AA-D4-CC-21-4F-04-16-9D-7B-1A-5B-E3-7C-56-A3-49-F4-49-B9-89-FF-3B-CD-E0-EA-61-69-50-FE-3A-DF-95-A1-2F-99-00-59-32-71-58-42-BE-C6-21-0A-93-48-BD-AA-25-9B-32-38-6E-71-AC-F4-D3-AC-E7-D5-10-C1-B2-05-E0-3D-54-81-D2-A6-D7-44-CD-AB-3A-83-40-8D-37-F2-9D-1D-89-6A-57-9B-5F-DE-2F-0D-9D-A7-D0-C4-F7-85-EB-5F-4D-C5-DE-05-9C-B2-E6-31-50-90-4D-72-2D-59-62-7F-99-9D-0F-A0-F8-4A-F3-CB-CB-2E-5C-0D-A8-AC-06-9B-E1-5F-77-6B-08-36-0E-E2-44-74-59-05-95-7E-A0-EA-3B-ED-BB-28-B7-F1-B1-B7-AC-D7-9D-46-82-DD-0C-CA-EE-40-86-C9-C5-38-C0-CD-62-EA-C9-62-17-74-63-76-12-3C-C7-CE-64-CC-50-FE-EC-B2-EA-F0-53-F4-AD-6D-84-61-B9-54-4F-F5-2D-22-1A-B7-DA-36-B2-A2-F1-D8-30-81-5A-C5-F6-15-7F-84-5E-09-C1-DA-47-9B-CD-C1-97-B6-B3-6F-71-46-C3-31-3D-D0-1D-43-8B-15-7A-86-20-2C-84-C2-5A-63-4C-EA-76-5A-EA-0E-17-3D-E4-1C-73-99-40-D9-20-E2-D0-00-D2-53-96-86-E1-1B-FA-75-9A-40-8C-EE-B1-47-25-75-31-2C-61-1F-C7-5C-CA-5B-E3-C0-D7-2E-73-5D-E1-F3-82-66-10-F2-5D-5C-B7-35-F4-C8-C6-F5-33-9C-A2-9A-73-3F-D0-03-9E-D2-8A-77-C4-A5-38-FB-83-2F-0F-4D-EB-2C-41-CA-55-18-62-D7-F7-05-A5-69-CA-01-84-03-83-57-87-49-0A-E5-BE-94-1E-CC-78-E6-CA-14-D6-08-D5-1B-17-86-90-CA-10-A2-D8-D3-32-21-8B-1A-BB-90-87-50-A4-3C-53-12-F9-1A-B5-08-FB-DD-0D-73-04-21-4E-B3-2E-F3-8E-70-56-C7-A4-46-98-10-BD-97-45-0C-A7-13-7B-03-C4-BD-F3-87-20-12-D3-3B-AE-6F-D9-4A-02-A4-25-A4-53-CF-24-F3-8F-AE-D4-7D-CD-BF-52-27-10-39-9D-43-18-C1-D0-87-69-A8-FB-3E-9B-44-42-B4-86-38-A2-90-8A-B8-90-12-9C-20-AC-19-8A-D1-C3-71-42-8A-D3-3E-F5-E4-F1-05-60-9C-20-EA-D4-29-F3-45-EA-42-98-C9-95-1C-A0-FC-42-07-12-72-9B-B4-F4-C3-14-72-89-86-87-6C-11-09-38-DA-60-E8-FA-2F-8E-64-1C-CB-24-D1-ED-D5-B9-E2-88-50-41-25-4F-B5-EF-79-CD-57-43-A2-DE-CC-9D-FC-98-7A-41-30-19-E2-18-0D-A8-C6-C4-41-D0-CF-F6-10-5E-F9-44-23-25-82-D7-00-39-14-FA-94-97-03-CD-06-99-29-07-D5-AA-81-94-50-8C-21-0A-E5-34-B5-9A-4F-F6-C2-E9-F3-B4-BB-69-7A-9C-4A-50-3F-86-0C-12-67-84-1C-52-2E-A9-BE-42-C9-A1-A7-F4-F7-46-6F-8A-6F-12-11-52-0A-B5-AE-6B-6F-97-C0-96-B5-35-92-9C-16-A1-2C-52-18-23-2F-DE-5A-D0-47-F5-E4-90-EB-87-1C-22-3E-F1-EE-B4-82-18-3A-67-1F-C2-94-C2-A2-80-31-D0-5D-7C-83-2D-6E-28-75-43-77-8A-0B-94-D9-11-27-78-8B-F9-1D-C9-FF-00-37-12-B7-2F-AA-08-00-00", - "response": "{\"fingerprints\": [{\"index\": \"0\", \"results\": [{\"id\": \"a9b004fe-e161-417c-9f9e-443e4525334d\", \"recordings\": [{\"id\": \"209a4536-97ac-4e8a-aff1-1d39d029044b\"}, {\"id\": \"30f3f33e-8d0c-4e69-8539-cbd701d18f28\"}], \"score\": 0.940997}, {\"id\": \"fe0a9bec-2633-4c37-89be-b5d295b68a00\", \"score\": 0.763876}, {\"id\": \"18eab869-51dc-4948-83f7-4d8d441d5a1b\", \"score\": 0.490447}]}], \"status\": \"ok\"}" + "request": "client=QANd68ji1L&format=json&meta=recordingids&batch=1&duration.0=85&fingerprint.0=AQACmomSJEySRNISHCa6zDh6OO_hoUfr48cvHD83-JApYL6F8oCMHvlg46qOHYf740L6ascN_fj0wh90aD2OC41FC-Exf0IvPBKyH6qNOGLEgrBxXC3w4MiFB2J--Cce4cYXpLwGXER64RHxQxT142eJFMeL40g_HSbUh7h6xONhuDZ-5NpxFrpwfCrSo4pj_EJYHoehvzjeHcbnDGoOH30WPEYeEz3xI72P0sLRNRHx49IB_IXx4_iH5yF-HOdx2FoE8R5-HM2hJmOF6hFSXziPHdtxmLmQ5sKYHzouFjlMokfOBncsaE91mPoQ_MctTCqRX9CEnziO_zhcCPk_POmOoz8u1KOQ6-ihazgaHw9OaPlxAvmKfDhUpcWH_MNbBr-Do0eYH7p-5PqFPUbD5TK2o6p0_MeP8IcOw0c-H8eRZxCjRniE8HgPhlKKxqmk4jnai8JZBO9SPMauFEeOHxeOFj_-NsgFdaHxIzx8PMzQRsQfRL4GHvoiNLnwXD6uA-Jx_DiM4-Wh5nBUIXx8vEMtBt60wWwQ3mh7ovE1PCmaHMdx9AiOM8SFXMfVC_oToDl64sqSsfiNB-Wh5_iT4xf-D8dh6PjxAP6CP8fjQf9ghM069IYfwxf8C5cQdwcXC5-CPNiP48WBKh_i49DN4Dz6C82Rx8mQH7-wgzls5VDznPhz4PBx_AAr-PjxVBHUB-aHQld2oWfQODnOoKcLX7iW4fHBFcfxHPOgH_Mt_HjEJDoq9cKH44nyQyfCjBeeVBP4VEUfvIvwIIueUYWTJviFH_lx_EeOQ7wG1sibwNGL7oh_6GzQTGKIkFm64CE-1TiYH_6OWHXw_Dh-2Dp0_TgR43mOXjOOkOGhZdKHPHiIvgy2H_0xJlsQX9Cu48gN__iR5_jBHj7U6wiVtyj9oemOz8LR_Ba-IM8VXDPCJ1PBRdMRyhe8aYZ-HP3R48fBvdCeHM9R7Qve48htuMoS0eiR-_jxoDkYLjoeJ9DUU_iA4zr44zec4_EOPcdTeAib4URPPLCPnseniUL0D6HSHf9xoz3wByF73Ic-VA_-fYh_ePwQ_cGlQD-ap-jDHOEpXENWwrEyPMe1I8ePHz_yQz-8D_-NrIbzo7uF-IcuohkZXBpyH89jnAJFHSH5DP9R5fh0FDrB42mGazj-bbhz6DwahGSKq_jxGwx3-EIsbnh-wdYO4YSPHz8OQszxPMSPhsf3HDl6zTCRhwr6g1fxPAej44txfLhw6JiPisfb4LhzlDy0ZDhj5NqIo3-w_UA6Cn2GKk6hHtcAH7-JH4cDNSkeHS9yH9_x4cyQ6yIemM5xBefx9HCqGT-OHzxOaDwefLfwpBfyC-EP_9CZo88snEPOHl-EHn4QMSd-XAN2PAe8HdBlH9SLrzm6HH-hK0d5mCrOoj9-MMe3hrhycPERjw9-YciJHx-EP8cTsRvOw5OOHjpjY14yEj0ycbBxZUXEVHB25BrM4McOhCwwCCDgjAQAFIOoAIICIQSAQiBDFELAEaYUMMtAKgUSACBnRJEQEGCAeAoRRIQQliFAsVYGGOKIcEYAAIVRgjgAJDNGKYCUBgIIKLwxCBHjCVDGECYuAsJBDhUSBhGhCACGKKOEEUUI4AAxHAkFHQEAQWeQJAYIYGQUAgBBgNGAMAEQMABRJwQSD2gCGAIMAOUIYhQBKwBjBCKmlCIBAACUYmYJZA0gRDgBCDDwWQcRAAAARJxACoFuBABOAACIwlY5Q4BwQAEAJDDYKZGQwogIyQwSABFmFDHDCAKAUMwooYAQABEgACPEAEORcQQ4aAAgHBRBpFFMECUoUJQZs4ARSBEFgUHKOUGAAYQ5QxAQyAFADDlAKgKMUAIQBxpQjBDLIBNCAGKsIBQRRQSSwjkFkCPDEOEQIUwKJJiywADhtHGAEaKAUBASxRRBxBgCDFBAKYWAAkIAYQQQBAkLBFEAKEIexEYxQYhFBghiAEDECCABMQAACh1QiBAgCDBUIEUZQAAAwpxYADFzAIAEIQEwkAQIAJhwylElhINSOMEEAwwggJVSAjHjgBQIEcMQcUARBJRT8AKBgAMAGKMIABIxQYVwhACAFbKAAUEAccAR4wmRlAjCiEEGMGIcEAQYZCSCTCInBQ&duration.1=85&fingerprint.1=AQACmomSJEySRNISHCa6zDh6OO_hoUfr48cvHD83-JApYL6F8oCMHvlg46qOHYf740L6ascN_fj0wh90aD2OC41FC-Exf0IvPBKyH6qNOGLEgrBxXC3w4MiFB2J--Cce4cYXpLwGXER64RHxQxT142eJFMeL40g_HSbUh7h6xONhuDZ-5NpxFrpwfCrSo4pj_EJYHoehvzjeHcbnDGoOH30WPEYeEz3xI72P0sLRNRHx49IB_IXx4_iH5yF-HOdx2FoE8R5-HM2hJmOF6hFSXziPHdtxmLmQ5sKYHzouFjlMokfOBncsaE91mPoQ_MctTCqRX9CEnziO_zhcCPk_POmOoz8u1KOQ6-ihazgaHw9OaPlxAvmKfDhUpcWH_MNbBr-Do0eYH7p-5PqFPUbD5TK2o6p0_MeP8IcOw0c-H8eRZxCjRniE8HgPhlKKxqmk4jnai8JZBO9SPMauFEeOHxeOFj_-NsgFdaHxIzx8PMzQRsQfRL4GHvoiNLnwXD6uA-Jx_DiM4-Wh5nBUIXx8vEMtBt60wWwQ3mh7ovE1PCmaHMdx9AiOM8SFXMfVC_oToDl64sqSsfiNB-Wh5_iT4xf-D8dh6PjxAP6CP8fjQf9ghM069IYfwxf8C5cQdwcXC5-CPNiP48WBKh_i49DN4Dz6C82Rx8mQH7-wgzls5VDznPhz4PBx_AAr-PjxVBHUB-aHQld2oWfQODnOoKcLX7iW4fHBFcfxHPOgH_Mt_HjEJDoq9cKH44nyQyfCjBeeVBP4VEUfvIvwIIueUYWTJviFH_lx_EeOQ7wG1sibwNGL7oh_6GzQTGKIkFm64CE-1TiYH_6OWHXw_Dh-2Dp0_TgR43mOXjOOkOGhZdKHPHiIvgy2H_0xJlsQX9Cu48gN__iR5_jBHj7U6wiVtyj9oemOz8LR_Ba-IM8VXDPCJ1PBRdMRyhe8aYZ-HP3R48fBvdCeHM9R7Qve48htuMoS0eiR-_jxoDkYLjoeJ9DUU_iA4zr44zec4_EOPcdTeAib4URPPLCPnseniUL0D6HSHf9xoz3wByF73Ic-VA_-fYh_ePwQ_cGlQD-ap-jDHOEpXENWwrEyPMe1I8ePHz_yQz-8D_-NrIbzo7uF-IcuohkZXBpyH89jnAJFHSH5DP9R5fh0FDrB42mGazj-bbhz6DwahGSKq_jxGwx3-EIsbnh-wdYO4YSPHz8OQszxPMSPhsf3HDl6zTCRhwr6g1fxPAej44txfLhw6JiPisfb4LhzlDy0ZDhj5NqIo3-w_UA6Cn2GKk6hHtcAH7-JH4cDNSkeHS9yH9_x4cyQ6yIemM5xBefx9HCqGT-OHzxOaDwefLfwpBfyC-EP_9CZo88snEPOHl-EHn4QMSd-XAN2PAe8HdBlH9SLrzm6HH-hK0d5mCrOoj9-MMe3hrhycPERjw9-YciJHx-EP8cTsRvOw5OOHjpjY14yEj0ycbBxZUXEVHB25BrM4McOhCwwCCDgjAQAFIOoAIICIQSAQiBDFELAEaYUMMtAKgUSACBnRJEQEGCAeAoRRIQQliFAsVYGGOKIcEYAAIVRgjgAJDNGKYCUBgIIKLwxCBHjCVDGECYuAsJBDhUSBhGhCACGKKOEEUUI4AAxHAkFHQEAQWeQJAYIYGQUAgBBgNGAMAEQMABRJwQSD2gCGAIMAOUIYhQBKwBjBCKmlCIBAACUYmYJZA0gRDgBCDDwWQcRAAAARJxACoFuBABOAACIwlY5Q4BwQAEAJDDYKZGQwogIyQwSABFmFDHDCAKAUMwooYAQABEgACPEAEORcQQ4aAAgHBRBpFFMECUoUJQZs4ARSBEFgUHKOUGAAYQ5QxAQyAFADDlAKgKMUAIQBxpQjBDLIBNCAGKsIBQRRQSSwjkFkCPDEOEQIUwKJJiywADhtHGAEaKAUBASxRRBxBgCDFBAKYWAAkIAYQQQBAkLBFEAKEIexEYxQYhFBghiAEDECCABMQAACh1QiBAgCDBUIEUZQAAAwpxYADFzAIAEIQEwkAQIAJhwylElhINSOMEEAwwggJVSAjHjgBQIEcMQcUARBJRT8AKBgAMAGKMIABIxQYVwhACAFbKAAUEAccAR4wmRlAjCiEEGMGIcEAQYZCSCTCInBQ", + "response": "{\"fingerprints\": [{\"index\": \"0\", \"results\": [{\"id\": \"a9b004fe-e161-417c-9f9e-443e4525334d\", \"recordings\": [{\"id\": \"209a4536-97ac-4e8a-aff1-1d39d029044b\"}, {\"id\": \"30f3f33e-8d0c-4e69-8539-cbd701d18f28\"}], \"score\": 0.940997}, {\"id\": \"fe0a9bec-2633-4c37-89be-b5d295b68a00\", \"score\": 0.763876}, {\"id\": \"18eab869-51dc-4948-83f7-4d8d441d5a1b\", \"score\": 0.490447}]}, {\"index\": \"1\", \"results\": [{\"id\": \"a9b004fe-e161-417c-9f9e-443e4525334d\", \"recordings\": [{\"id\": \"209a4536-97ac-4e8a-aff1-1d39d029044b\"}, {\"id\": \"30f3f33e-8d0c-4e69-8539-cbd701d18f28\"}], \"score\": 0.940997}, {\"id\": \"fe0a9bec-2633-4c37-89be-b5d295b68a00\", \"score\": 0.763876}, {\"id\": \"18eab869-51dc-4948-83f7-4d8d441d5a1b\", \"score\": 0.490447}]}], \"status\": \"ok\"}" }, { - "requestContent": "1F-8B-08-00-00-00-00-00-00-03-ED-96-CB-B6-AA-30-12-86-DF-E6-CC-E8-E5-25-22-0E-CE-20-37-48-40-0C-01-51-71-C2-52-04-02-8A-B8-BD-05-78-FA-A6-47-7D-19-F7-70-67-46-42-AA-2A-7F-FD-AB-D6-97-DD-AA-FC-FE-FE-2B-E1-E6-62-5A-75-35-5D-FF-29-DA-67-73-7A-FF-AD-5F-ED-FD-4F-93-BF-4F-7F-9F-79-D6-3E-2F-D5-BD-AC-2E-AF-3F-E7-D3-3B-53-7F-A7-7F-2E-9F-E7-E9-5D-B5-F7-7F-4C-FE-5A-8B-3F-C5-78-9A-3F-1F-CF-EA-FE-1E-37-A0-84-B8-69-9B-C8-A5-7D-14-6E-78-C4-F0-C9-1C-88-32-85-48-55-1B-17-4F-60-65-5F-46-AC-B9-E1-C2-47-B2-36-6D-AB-C5-3E-FB-DE-4A-60-FE-08-96-14-4B-30-59-9B-A7-57-B6-49-8B-7A-A2-D5-6A-72-22-33-81-C1-D4-C6-06-ED-8A-09-FF-06-C8-EB-99-F9-B3-11-CE-9A-96-4F-D4-1D-F0-5C-03-BF-B2-D1-CC-35-0C-9C-E5-20-4B-0E-8F-B5-76-0E-34-34-41-C8-3A-D9-6D-A7-60-96-BB-B6-9F-AF-C1-A4-4C-59-74-8E-D5-52-99-9D-D8-A8-0F-39-1A-8B-CD-A3-B3-9F-0F-5D-E0-67-D4-82-47-9D-52-37-61-6D-AE-BE-43-9D-B3-EC-7C-27-4E-2B-D8-7C-B2-0F-68-92-D3-61-DE-F1-E5-2C-98-BC-D6-E1-66-8C-0D-56-1C-A5-FC-D0-81-B4-62-8B-DE-36-98-B8-74-33-BB-A5-56-B8-30-98-3F-53-6E-23-6C-53-D9-D1-61-A8-02-76-79-77-CD-BA-91-8B-97-97-B0-A1-FD-D8-F5-CD-6F-AF-85-40-F7-EC-75-A2-AB-69-13-B4-32-F5-B3-F7-16-FF-84-87-15-A6-F7-A1-12-E9-A0-32-1C-5C-D3-40-34-A2-1D-AC-CF-D4-13-D2-34-2A-75-1A-CA-13-D3-2B-71-0A-6E-1D-FC-36-5E-41-54-FC-C8-F6-2C-F5-37-67-F4-34-48-3B-C9-13-B6-7C-18-8B-E0-C7-0E-E2-33-59-6C-BD-59-6B-3E-26-A9-9F-07-16-CF-84-9E-64-06-B3-F2-F0-D8-E1-3A-BC-57-D4-62-65-A0-6E-9E-D7-FD-34-57-50-DF-4F-95-E5-1E-91-58-45-81-7F-FA-D8-34-17-AC-CB-85-5D-A7-C6-E6-55-DA-97-13-EB-F8-D0-59-81-3F-C8-F0-25-8B-70-0D-1C-F6-6D-AB-CD-FA-AE-0F-C4-FC-40-C3-ED-52-52-F9-C0-D8-AB-C5-1D-C5-A3-3C-D6-97-FA-6F-F4-36-27-7A-AF-E5-BC-51-CB-F6-4B-A7-01-6E-4E-CC-BF-74-2B-58-09-DF-8A-EC-83-5F-EC-70-DA-6E-5B-72-33-C1-EB-27-7A-15-D5-06-FD-2B-46-5A-6D-41-57-18-C4-BA-28-33-A8-3B-18-98-38-B0-8A-5A-16-AB-52-F9-13-73-C5-93-42-77-85-85-17-99-BC-E8-EC-80-17-06-0E-36-55-00-AC-3D-F2-54-5A-81-15-D9-00-32-98-D8-9A-85-9D-D5-48-B6-34-74-39-DC-5E-8B-1D-19-EE-81-1A-40-80-BA-14-C2-A7-31-C6-DE-21-16-23-E3-C4-E4-ED-32-6B-F7-85-14-E4-2E-5A-2F-5B-1F-96-D5-1E-14-0C-D9-59-D1-B1-40-94-A3-D0-EF-94-D5-D4-25-ED-CF-2A-F3-18-00-F7-5E-F6-05-AE-51-9E-EF-50-00-76-34-2E-BE-FC-AB-39-FF-E4-71-B2-DF-BA-DF-CA-66-E9-AD-4B-47-2D-E5-52-3B-D3-57-75-D6-1B-67-BD-6C-55-6A-3A-83-DC-3A-1E-BF-DA-8D-09-30-35-A6-DB-2A-61-A9-29-F6-EC-A0-53-A2-8C-19-19-FB-B6-2D-43-30-6F-C4-A1-16-E2-2A-1C-75-BC-78-2C-60-15-FF-96-FD-8C-A5-93-CE-BD-BD-E4-E8-99-0F-B0-CA-4D-9A-56-E1-22-AD-11-AB-97-B1-A9-AB-DD-BB-AF-57-6D-DE-88-C1-5A-87-29-3A-19-DC-B7-76-07-12-60-77-1A-A0-F0-E2-87-BD-CA-AD-53-72-34-58-30-0F-81-55-A0-EF-05-E7-CC-5F-85-4B-F9-CD-81-A5-DE-1F-BF-8D-26-79-15-1A-69-DD-B5-E4-9A-AC-EB-36-77-57-24-8E-D3-0A-82-E1-09-C0-90-67-20-A5-22-C8-2E-DB-1C-56-67-10-87-41-B0-C6-C1-FD-95-DF-AB-78-3D-21-26-8B-58-B1-EA-DA-61-AE-51-6F-2F-E7-3C-33-76-30-35-8A-44-A5-79-A0-65-9A-39-37-49-8C-D3-C3-A8-09-13-F4-71-A0-9B-BD-7E-D2-3E-F0-F3-29-B7-F2-80-0D-69-2F-07-C3-22-A3-FD-9E-FC-3C-B4-CB-8F-6D-F0-EC-D3-AA-EB-F1-80-1E-3D-B3-56-F5-1D-BA-F6-98-65-41-82-55-B8-28-D4-C4-26-4F-04-66-8D-73-1A-6A-E3-7C-56-83-49-F4-49-39-91-F7-33-BE-C1-D1-DD-DC-A0-FC-75-BE-2B-43-5F-12-01-92-68-CC-61-09-F9-1A-BA-C0-8F-02-F5-2A-E6-6C-F4-E0-B0-C5-A1-D2-4F-B3-9C-16-5D-00-F3-1A-80-77-57-AC-95-36-DD-2A-A8-5E-C5-19-AC-D5-70-23-FD-E4-48-54-BD-D8-FC-F0-76-6E-E8-34-86-26-BE-CF-1C-EF-6A-2A-F6-CE-E0-E8-35-97-81-8C-6C-A2-6B-CE-A2-55-CF-56-69-07-B2-5E-9A-3D-CF-1B-7F-D1-A1-BC-E8-56-0C-FF-38-5B-43-B0-A1-13-27-A2-F3-62-5D-E8-07-2A-FA-71-DE-05-E9-0A-1F-5B-CB-7A-DD-69-20-D8-CD-A0-EC-0E-A4-1F-5D-8C-03-DC-CC-C6-9A-2C-76-41-37-B6-8A-D6-CF-A1-31-19-33-94-37-B9-2C-1A-FC-14-6D-BD-32-7C-3F-9F-AB-A7-EA-B3-80-86-B5-5E-19-49-56-B9-AC-1B-83-5A-D9-F6-15-7E-85-5E-08-C1-EA-47-9D-4C-41-4F-EB-49-9F-9D-51-77-8C-0F-74-C7-D0-6C-81-9E-3E-F0-33-A1-B0-D6-18-93-B2-1E-87-BA-CD-45-0B-39-C7-5C-46-50-56-88-D8-74-0D-E9-29-89-7D-FF-0D-BD-32-8E-20-46-F7-D0-A5-92-3A-18-E6-B0-0D-43-2E-E5-AD-B2-E1-6B-97-38-8E-F0-78-46-13-08-F9-2E-2C-EB-12-BA-64-E3-78-09-8E-51-C9-B9-B7-D6-1D-1E-DD-8A-77-C4-A1-38-F9-C0-97-8B-C6-71-16-21-E5-28-0C-B1-E3-79-82-D2-38-E6-00-C2-8E-C1-AB-CD-24-85-72-9F-4B-17-26-3C-71-64-0C-4B-84-CA-8D-03-7D-48-A5-0F-51-E8-6A-19-91-59-89-1D-C8-7D-28-62-9E-28-89-3C-8D-6A-84-BD-E6-86-39-82-10-C7-49-93-B8-47-38-29-43-52-22-4C-88-DE-CB-2C-84-E3-0A-DD-0E-E2-D6-FE-20-88-C4-F8-1F-D7-B7-64-21-01-D2-12-D2-B1-66-92-78-47-47-EA-B6-E4-BD-D4-11-44-76-63-13-46-30-F4-60-EC-EB-B6-4D-46-91-10-2D-21-0E-28-A4-22-CC-A4-04-27-08-4B-86-42-F4-B0-6D-9F-E2-B8-8D-5D-79-7C-01-18-46-88-DA-65-CC-3C-11-3B-10-26-72-21-3B-28-7B-68-43-42-6E-A3-96-9E-1F-43-2E-51-F7-90-35-22-6B-8E-36-18-3A-DE-8B-23-19-86-32-8A-74-7D-B5-AF-38-20-54-50-C9-63-ED-B9-6E-D5-6B-48-D4-9B-39-63-3F-C6-5A-10-8C-BA-30-44-1D-2A-31-B1-11-F4-92-3D-84-57-3E-A6-91-12-C1-EB-1A-D9-14-7A-94-E7-1D-4D-3A-99-28-1B-95-AA-82-94-50-8C-21-F2-E5-F8-6A-35-1D-DB-0B-C7-CB-E3-EC-A6-F1-71-DC-82-FA-D1-25-90-D8-03-E4-90-72-49-F5-15-4A-0E-5D-A5-FB-1B-BD-29-BE-89-84-4F-29-D4-BA-2C-DD-5D-04-6B-56-97-48-72-9A-F9-32-8B-61-88-DC-70-6B-41-0F-95-63-87-1C-CF-E7-10-F1-31-EF-4E-2B-88-A1-7D-F6-20-8C-29-CC-32-18-02-DD-84-37-58-E3-8A-52-C7-77-46-BB-40-99-1C-71-84-B7-98-DF-91-FC-37-72-4C-FF-17-39-A6-BF-C8-F1-8B-1C-BF-C8-F1-8B-1C-BF-C8-F1-8B-1C-BF-C8-F1-8B-1C-FF-77-E4-98-FD-9D-FE-17-71-CC-FE-FE-C7-D7-3F-01-83-40-10-23-44-11-00-00", + "request": "client=QANd68ji1L&format=json&meta=recordingids&batch=1&duration.0=1&fingerprint.0=fingerprint", + "response": "{\"error\": {\"code\": 3, \"message\": \"invalid fingerprint\"}, \"status\": \"error\"}" + }, + { + "request": "client=QANd68ji1L&format=json&meta=recordingids&batch=1&duration.0=85&fingerprint.0=AQACmomSJEySRNISHCa6zDh6OO_hoUfr48cvHD83-JApYL6F8oCMHvlg46qOHYf740L6ascN_fj0wh90aD2OC41FC-Exf0IvPBKyH6qNOGLEgrBxXC3w4MiFB2J--Cce4cYXpLwGXER64RHxQxT142eJFMeL40g_HSbUh7h6xONhuDZ-5NpxFrpwfCrSo4pj_EJYHoehvzjeHcbnDGoOH30WPEYeEz3xI72P0sLRNRHx49IB_IXx4_iH5yF-HOdx2FoE8R5-HM2hJmOF6hFSXziPHdtxmLmQ5sKYHzouFjlMokfOBncsaE91mPoQ_MctTCqRX9CEnziO_zhcCPk_POmOoz8u1KOQ6-ihazgaHw9OaPlxAvmKfDhUpcWH_MNbBr-Do0eYH7p-5PqFPUbD5TK2o6p0_MeP8IcOw0c-H8eRZxCjRniE8HgPhlKKxqmk4jnai8JZBO9SPMauFEeOHxeOFj_-NsgFdaHxIzx8PMzQRsQfRL4GHvoiNLnwXD6uA-Jx_DiM4-Wh5nBUIXx8vEMtBt60wWwQ3mh7ovE1PCmaHMdx9AiOM8SFXMfVC_oToDl64sqSsfiNB-Wh5_iT4xf-D8dh6PjxAP6CP8fjQf9ghM069IYfwxf8C5cQdwcXC5-CPNiP48WBKh_i49DN4Dz6C82Rx8mQH7-wgzls5VDznPhz4PBx_AAr-PjxVBHUB-aHQld2oWfQODnOoKcLX7iW4fHBFcfxHPOgH_Mt_HjEJDoq9cKH44nyQyfCjBeeVBP4VEUfvIvwIIueUYWTJviFH_lx_EeOQ7wG1sibwNGL7oh_6GzQTGKIkFm64CE-1TiYH_6OWHXw_Dh-2Dp0_TgR43mOXjOOkOGhZdKHPHiIvgy2H_0xJlsQX9Cu48gN__iR5_jBHj7U6wiVtyj9oemOz8LR_Ba-IM8VXDPCJ1PBRdMRyhe8aYZ-HP3R48fBvdCeHM9R7Qve48htuMoS0eiR-_jxoDkYLjoeJ9DUU_iA4zr44zec4_EOPcdTeAib4URPPLCPnseniUL0D6HSHf9xoz3wByF73Ic-VA_-fYh_ePwQ_cGlQD-ap-jDHOEpXENWwrEyPMe1I8ePHz_yQz-8D_-NrIbzo7uF-IcuohkZXBpyH89jnAJFHSH5DP9R5fh0FDrB42mGazj-bbhz6DwahGSKq_jxGwx3-EIsbnh-wdYO4YSPHz8OQszxPMSPhsf3HDl6zTCRhwr6g1fxPAej44txfLhw6JiPisfb4LhzlDy0ZDhj5NqIo3-w_UA6Cn2GKk6hHtcAH7-JH4cDNSkeHS9yH9_x4cyQ6yIemM5xBefx9HCqGT-OHzxOaDwefLfwpBfyC-EP_9CZo88snEPOHl-EHn4QMSd-XAN2PAe8HdBlH9SLrzm6HH-hK0d5mCrOoj9-MMe3hrhycPERjw9-YciJHx-EP8cTsRvOw5OOHjpjY14yEj0ycbBxZUXEVHB25BrM4McOhCwwCCDgjAQAFIOoAIICIQSAQiBDFELAEaYUMMtAKgUSACBnRJEQEGCAeAoRRIQQliFAsVYGGOKIcEYAAIVRgjgAJDNGKYCUBgIIKLwxCBHjCVDGECYuAsJBDhUSBhGhCACGKKOEEUUI4AAxHAkFHQEAQWeQJAYIYGQUAgBBgNGAMAEQMABRJwQSD2gCGAIMAOUIYhQBKwBjBCKmlCIBAACUYmYJZA0gRDgBCDDwWQcRAAAARJxACoFuBABOAACIwlY5Q4BwQAEAJDDYKZGQwogIyQwSABFmFDHDCAKAUMwooYAQABEgACPEAEORcQQ4aAAgHBRBpFFMECUoUJQZs4ARSBEFgUHKOUGAAYQ5QxAQyAFADDlAKgKMUAIQBxpQjBDLIBNCAGKsIBQRRQSSwjkFkCPDEOEQIUwKJJiywADhtHGAEaKAUBASxRRBxBgCDFBAKYWAAkIAYQQQBAkLBFEAKEIexEYxQYhFBghiAEDECCABMQAACh1QiBAgCDBUIEUZQAAAwpxYADFzAIAEIQEwkAQIAJhwylElhINSOMEEAwwggJVSAjHjgBQIEcMQcUARBJRT8AKBgAMAGKMIABIxQYVwhACAFbKAAUEAccAR4wmRlAjCiEEGMGIcEAQYZCSCTCInBQ&duration.1=85&fingerprint.1=AQACmomSJEySRNISHCa6zDh6OO_hoUfr48cvHD83-JApYL6F8oCMHvlg46qOHYf740L6ascN_fj0wh90aD2OC41FC-Exf0IvPBKyH6qNOGLEgrBxXC3w4MiFB2J--Cce4cYXpLwGXER64RHxQxT142eJFMeL40g_HSbUh7h6xONhuDZ-5NpxFrpwfCrSo4pj_EJYHoehvzjeHcbnDGoOH30WPEYeEz3xI72P0sLRNRHx49IB_IXx4_iH5yF-HOdx2FoE8R5-HM2hJmOF6hFSXziPHdtxmLmQ5sKYHzouFjlMokfOBncsaE91mPoQ_MctTCqRX9CEnziO_zhcCPk_POmOoz8u1KOQ6-ihazgaHw9OaPlxAvmKfDhUpcWH_MNbBr-Do0eYH7p-5PqFPUbD5TK2o6p0_MeP8IcOw0c-H8eRZxCjRniE8HgPhlKKxqmk4jnai8JZBO9SPMauFEeOHxeOFj_-NsgFdaHxIzx8PMzQRsQfRL4GHvoiNLnwXD6uA-Jx_DiM4-Wh5nBUIXx8vEMtBt60wWwQ3mh7ovE1PCmaHMdx9AiOM8SFXMfVC_oToDl64sqSsfiNB-Wh5_iT4xf-D8dh6PjxAP6CP8fjQf9ghM069IYfwxf8C5cQdwcXC5-CPNiP48WBKh_i49DN4Dz6C82Rx8mQH7-wgzls5VDznPhz4PBx_AAr-PjxVBHUB-aHQld2oWfQODnOoKcLX7iW4fHBFcfxHPOgH_Mt_HjEJDoq9cKH44nyQyfCjBeeVBP4VEUfvIvwIIueUYWTJviFH_lx_EeOQ7wG1sibwNGL7oh_6GzQTGKIkFm64CE-1TiYH_6OWHXw_Dh-2Dp0_TgR43mOXjOOkOGhZdKHPHiIvgy2H_0xJlsQX9Cu48gN__iR5_jBHj7U6wiVtyj9oemOz8LR_Ba-IM8VXDPCJ1PBRdMRyhe8aYZ-HP3R48fBvdCeHM9R7Qve48htuMoS0eiR-_jxoDkYLjoeJ9DUU_iA4zr44zec4_EOPcdTeAib4URPPLCPnseniUL0D6HSHf9xoz3wByF73Ic-VA_-fYh_ePwQ_cGlQD-ap-jDHOEpXENWwrEyPMe1I8ePHz_yQz-8D_-NrIbzo7uF-IcuohkZXBpyH89jnAJFHSH5DP9R5fh0FDrB42mGazj-bbhz6DwahGSKq_jxGwx3-EIsbnh-wdYO4YSPHz8OQszxPMSPhsf3HDl6zTCRhwr6g1fxPAej44txfLhw6JiPisfb4LhzlDy0ZDhj5NqIo3-w_UA6Cn2GKk6hHtcAH7-JH4cDNSkeHS9yH9_x4cyQ6yIemM5xBefx9HCqGT-OHzxOaDwefLfwpBfyC-EP_9CZo88snEPOHl-EHn4QMSd-XAN2PAe8HdBlH9SLrzm6HH-hK0d5mCrOoj9-MMe3hrhycPERjw9-YciJHx-EP8cTsRvOw5OOHjpjY14yEj0ycbBxZUXEVHB25BrM4McOhCwwCCDgjAQAFIOoAIICIQSAQiBDFELAEaYUMMtAKgUSACBnRJEQEGCAeAoRRIQQliFAsVYGGOKIcEYAAIVRgjgAJDNGKYCUBgIIKLwxCBHjCVDGECYuAsJBDhUSBhGhCACGKKOEEUUI4AAxHAkFHQEAQWeQJAYIYGQUAgBBgNGAMAEQMABRJwQSD2gCGAIMAOUIYhQBKwBjBCKmlCIBAACUYmYJZA0gRDgBCDDwWQcRAAAARJxACoFuBABOAACIwlY5Q4BwQAEAJDDYKZGQwogIyQwSABFmFDHDCAKAUMwooYAQABEgACPEAEORcQQ4aAAgHBRBpFFMECUoUJQZs4ARSBEFgUHKOUGAAYQ5QxAQyAFADDlAKgKMUAIQBxpQjBDLIBNCAGKsIBQRRQSSwjkFkCPDEOEQIUwKJJiywADhtHGAEaKAUBASxRRBxBgCDFBAKYWAAkIAYQQQBAkLBFEAKEIexEYxQYhFBghiAEDECCABMQAACh1QiBAgCDBUIEUZQAAAwpxYADFzAIAEIQEwkAQIAJhwylElhINSOMEEAwwggJVSAjHjgBQIEcMQcUARBJRT8AKBgAMAGKMIABIxQYVwhACAFbKAAUEAccAR4wmRlAjCiEEGMGIcEAQYZCSCTCInBQ&duration.2=1&fingerprint.2=fingerprint", "response": "{\"fingerprints\": [{\"index\": \"0\", \"results\": [{\"id\": \"a9b004fe-e161-417c-9f9e-443e4525334d\", \"recordings\": [{\"id\": \"209a4536-97ac-4e8a-aff1-1d39d029044b\"}, {\"id\": \"30f3f33e-8d0c-4e69-8539-cbd701d18f28\"}], \"score\": 0.940997}, {\"id\": \"fe0a9bec-2633-4c37-89be-b5d295b68a00\", \"score\": 0.763876}, {\"id\": \"18eab869-51dc-4948-83f7-4d8d441d5a1b\", \"score\": 0.490447}]}, {\"index\": \"1\", \"results\": [{\"id\": \"a9b004fe-e161-417c-9f9e-443e4525334d\", \"recordings\": [{\"id\": \"209a4536-97ac-4e8a-aff1-1d39d029044b\"}, {\"id\": \"30f3f33e-8d0c-4e69-8539-cbd701d18f28\"}], \"score\": 0.940997}, {\"id\": \"fe0a9bec-2633-4c37-89be-b5d295b68a00\", \"score\": 0.763876}, {\"id\": \"18eab869-51dc-4948-83f7-4d8d441d5a1b\", \"score\": 0.490447}]}], \"status\": \"ok\"}" }, { - "requestContent": "1F-8B-08-00-00-00-00-00-00-03-4D-C9-3B-0A-80-30-0C-00-D0-DB-64-14-BB-88-4B-06-77-11-3C-42-EC-47-53-6C-2A-69-BC-BF-1D-1D-1F-CF-DF-1C-C5-70-5F-B6-30-CD-99-DD-0A-A9-6A-21-C3-DC-AA-40-89-46-A8-D1-57-0D-2C-27-87-06-07-99-BF-D0-41-78-95-8C-AB-0C-23-8E-90-7A-46-7D-94-C5-BA-7F-FA-00-8B-C4-FF-AB-5E-00-00-00", + "request": "client=QANd68ji1L&format=json&meta=recordingids&batch=1&duration.0=0&fingerprint.0=fingerprint", "response": "{\"error\": {\"code\": 2, \"message\": \"missing required parameter \\\"duration.0\\\"\"}, \"status\": \"error\"}" }, { - "requestContent": "1F-8B-08-00-00-00-00-00-00-03-ED-96-CB-D2-B2-BA-12-86-EF-E6-9F-B1-CA-43-44-1C-FC-83-9C-20-01-31-04-44-C5-09-A5-08-04-14-F1-F3-14-E0-EA-37-7B-B4-AB-F6-78-0D-BF-0C-73-E8-EE-BC-FD-56-D7-93-DD-AA-FC-FE-FE-2B-E1-E6-62-5A-75-35-5D-FF-29-DA-67-73-7A-FF-AD-5F-ED-FD-4F-93-BF-4F-7F-9F-79-D6-3E-2F-D5-BD-AC-2E-AF-3F-E7-D3-3B-53-7F-A7-7F-2E-9F-E7-E9-5D-B5-F7-7F-26-7F-AD-C5-9F-62-3C-CD-9F-8F-67-75-7F-8F-1B-50-42-DC-B4-4D-E4-D2-3E-0A-37-3C-62-F8-64-0E-44-99-42-A4-AA-8D-8B-27-B0-B2-2F-23-D6-DC-70-E1-23-59-9B-B6-D5-62-9F-7D-6F-25-30-7F-04-4B-8A-25-98-AC-CD-D3-2B-DB-A4-45-3D-D1-6A-35-39-91-99-C0-60-6A-63-83-76-C5-84-7F-03-E4-F5-CC-FC-D9-08-67-4D-CB-27-EA-0E-78-AE-81-5F-D9-68-E6-1A-06-CE-72-90-25-87-C7-5A-3B-07-1A-9A-20-64-9D-EC-B6-53-30-CB-5D-DB-CF-D7-60-52-A6-2C-3A-C7-6A-A9-CC-4E-6C-D4-87-1C-8D-C5-E6-D1-D9-CF-87-2E-F0-33-6A-C1-A3-4E-A9-9B-B0-36-57-DF-A1-CE-59-76-BE-13-A7-15-6C-3E-D9-07-34-C9-E9-30-EF-F8-72-16-4C-5E-EB-70-33-C6-06-2B-8E-52-7E-E8-40-5A-B1-45-6F-1B-4C-5C-BA-99-DD-52-2B-5C-18-CC-9F-29-B7-11-B6-A9-EC-E8-30-54-01-BB-BC-BB-66-DD-C8-C5-CB-4B-D8-D0-7E-EC-FA-E6-B7-D7-42-A0-7B-F6-3A-D1-D5-B4-09-5A-99-FA-D9-7B-8B-7F-C2-C3-0A-D3-FB-50-89-74-50-19-0E-AE-69-20-1A-D1-0E-D6-67-EA-09-69-1A-95-3A-0D-E5-89-E9-95-38-05-B7-0E-7E-1B-AF-20-2A-7E-64-7B-96-FA-9B-33-7A-1A-A4-9D-E4-09-5B-3E-8C-45-F0-63-07-F1-99-2C-B6-DE-AC-35-1F-93-D4-CF-03-8B-67-42-4F-32-83-59-79-78-EC-70-1D-DE-2B-6A-B1-32-50-37-CF-EB-7E-9A-2B-A8-EF-A7-CA-72-8F-48-AC-A2-C0-3F-7D-6C-9A-0B-D6-E5-C2-AE-53-63-F3-2A-ED-CB-89-75-7C-E8-AC-C0-1F-64-F8-92-45-B8-06-0E-FB-B6-D5-66-7D-D7-07-62-7E-A0-E1-76-29-A9-7C-60-EC-D5-E2-8E-E2-51-1E-EB-4B-FD-37-7A-9B-13-BD-D7-72-DE-A8-65-FB-A5-D3-00-37-27-E6-5F-BA-15-AC-84-6F-45-F6-C1-2F-76-38-6D-B7-2D-B9-99-E0-F5-13-BD-8A-6A-83-FE-1B-23-AD-B6-A0-2B-0C-62-5D-94-19-D4-1D-0C-4C-1C-58-45-2D-8B-55-A9-FC-89-B9-E2-49-A1-BB-C2-C2-8B-4C-5E-74-76-C0-0B-03-07-9B-2A-00-D6-1E-79-2A-AD-C0-8A-6C-00-19-4C-6C-CD-C2-CE-6A-24-5B-1A-BA-1C-6E-AF-C5-8E-0C-F7-40-0D-20-40-5D-0A-E1-D3-18-63-EF-10-8B-91-71-62-F2-76-99-B5-FB-42-0A-72-17-AD-97-AD-0F-CB-6A-0F-0A-86-EC-AC-E8-58-20-CA-51-E8-77-CA-6A-EA-92-F6-67-95-79-0C-80-7B-2F-FB-02-D7-28-CF-77-28-00-3B-1A-17-5F-FE-D5-9C-7F-F2-38-D9-6F-DD-6F-65-B3-F4-D6-A5-A3-96-72-A9-9D-E9-AB-3A-EB-8D-B3-5E-B6-2A-35-9D-41-6E-1D-8F-5F-ED-C6-04-98-1A-D3-6D-95-B0-D4-14-7B-76-D0-29-51-C6-8C-8C-7D-DB-96-21-98-37-E2-50-0B-71-15-8E-3A-5E-3C-16-B0-8A-7F-CB-7E-C6-D2-49-E7-DE-5E-72-F4-CC-07-58-E5-26-4D-AB-70-91-D6-88-D5-CB-D8-D4-D5-EE-DD-D7-AB-36-6F-C4-60-AD-C3-14-9D-0C-EE-5B-BB-03-09-B0-3B-0D-50-78-F1-C3-5E-E5-D6-29-39-1A-2C-98-87-C0-2A-D0-F7-82-73-E6-AF-C2-A5-FC-E6-C0-52-EF-8F-DF-46-93-BC-0A-8D-B4-EE-5A-72-4D-D6-75-9B-BB-2B-12-C7-69-05-C1-F0-04-60-C8-33-90-52-11-64-97-6D-0E-AB-33-88-C3-20-58-E3-E0-FE-CA-EF-55-BC-9E-10-93-45-AC-58-75-ED-30-D7-A8-B7-97-73-9E-19-3B-98-1A-45-A2-D2-3C-D0-32-CD-9C-9B-24-C6-E9-61-D4-84-09-FA-38-D0-CD-5E-3F-69-1F-F8-F9-94-5B-79-C0-86-B4-97-83-61-91-D1-7E-4F-7E-1E-DA-E5-C7-36-78-F6-69-D5-F5-78-40-8F-9E-59-AB-FA-0E-5D-7B-CC-B2-20-C1-2A-5C-14-6A-62-93-27-02-B3-C6-39-0D-B5-71-3E-AB-C1-24-FA-A4-9C-C8-FB-19-FF-E0-E8-6E-6E-50-FE-3A-DF-95-A1-2F-89-00-49-34-E6-B0-84-7C-0D-5D-E0-47-81-7A-15-73-36-7A-70-D8-E2-50-E9-A7-59-4E-8B-2E-80-79-0D-C0-BB-2B-D6-4A-9B-6E-15-54-AF-E2-0C-D6-6A-B8-91-7E-72-24-AA-5E-6C-7E-78-3B-37-74-1A-43-13-DF-67-8E-77-35-15-7B-67-70-F4-9A-CB-40-46-36-D1-35-67-D1-AA-67-AB-B4-03-59-2F-CD-9E-E7-8D-BF-E8-50-5E-74-2B-86-7F-9C-AD-21-D8-D0-89-13-D1-79-B1-2E-F4-03-15-FD-38-EF-82-74-85-8F-AD-65-BD-EE-34-10-EC-66-50-76-07-D2-8F-2E-C6-01-6E-66-63-4D-16-BB-A0-1B-5B-45-EB-E7-D0-98-8C-19-CA-9B-5C-16-0D-7E-8A-B6-5E-19-BE-9F-CF-D5-53-F5-59-40-C3-5A-AF-8C-24-AB-5C-D6-8D-41-AD-6C-FB-0A-BF-42-2F-84-60-F5-A3-4E-A6-A0-A7-F5-A4-CF-CE-A8-3B-C6-07-BA-63-68-B6-40-4F-1F-F8-99-50-58-6B-8C-49-59-8F-43-DD-E6-A2-85-9C-63-2E-23-28-2B-44-6C-BA-86-F4-94-C4-BE-FF-86-5E-19-47-10-A3-7B-E8-52-49-1D-0C-73-D8-86-21-97-F2-56-D9-F0-B5-4B-1C-47-78-3C-A3-09-84-7C-17-96-75-09-5D-B2-71-BC-04-C7-A8-E4-DC-5B-EB-0E-8F-6E-C5-3B-E2-50-9C-7C-E0-CB-45-E3-38-8B-90-72-14-86-D8-F1-3C-41-69-1C-73-00-61-C7-E0-D5-66-92-42-B9-CF-A5-0B-13-9E-38-32-86-25-42-E5-C6-81-3E-A4-D2-87-28-74-B5-8C-C8-AC-C4-0E-E4-3E-14-31-4F-94-44-9E-46-35-C2-5E-73-C3-1C-41-88-E3-A4-49-DC-23-9C-94-21-29-11-26-44-EF-65-16-C2-71-85-6E-07-71-6B-7F-10-44-62-BC-C7-F5-2D-59-48-80-B4-84-74-AC-99-24-DE-D1-91-BA-2D-79-2F-75-04-91-DD-D8-84-11-0C-3D-18-FB-BA-6D-93-51-24-44-4B-88-03-0A-A9-08-33-29-C1-09-C2-92-A1-10-3D-6C-DB-A7-38-6E-63-57-1E-5F-00-86-11-A2-76-19-33-4F-C4-0E-84-89-5C-C8-0E-CA-1E-DA-90-90-DB-A8-A5-E7-C7-90-4B-D4-3D-64-8D-C8-9A-A3-0D-86-8E-F7-E2-48-86-A1-8C-22-5D-5F-ED-2B-0E-08-15-54-F2-58-7B-AE-5B-F5-1A-12-F5-66-CE-D8-8F-B1-16-04-A3-2E-0C-51-87-4A-4C-6C-04-BD-64-0F-E1-95-8F-69-A4-44-F0-BA-46-36-85-1E-E5-79-47-93-4E-26-CA-46-A5-AA-20-25-14-63-88-7C-39-FE-5A-4D-C7-F6-C2-F1-F1-38-BB-69-7C-1C-B7-A0-7E-74-09-24-F6-00-39-A4-5C-52-7D-85-92-43-57-E9-FE-46-6F-8A-6F-22-E1-53-0A-B5-2E-4B-77-17-C1-9A-D5-25-92-9C-66-BE-CC-62-18-22-37-DC-5A-D0-43-E5-D8-21-C7-F3-39-44-7C-CC-BB-D3-0A-62-68-9F-3D-08-63-0A-B3-0C-86-40-37-E1-0D-D6-B8-A2-D4-F1-9D-D1-2E-50-26-47-1C-E1-2D-E6-77-24-FF-87-1C-D3-FF-47-8E-E9-2F-72-FC-22-C7-2F-72-FC-22-C7-2F-72-FC-22-C7-2F-72-FC-22-C7-BF-84-1C-FF-01-01-46-31-86-1D-11-00-00", + "request": "client=QANd68ji1L&format=json&meta=recordingids&batch=1&duration.0=85&fingerprint.0=AQACmomSJEySRNISHCa6zDh6OO_hoUfr48cvHD83-JApYL6F8oCMHvlg46qOHYf740L6ascN_fj0wh90aD2OC41FC-Exf0IvPBKyH6qNOGLEgrBxXC3w4MiFB2J--Cce4cYXpLwGXER64RHxQxT142eJFMeL40g_HSbUh7h6xONhuDZ-5NpxFrpwfCrSo4pj_EJYHoehvzjeHcbnDGoOH30WPEYeEz3xI72P0sLRNRHx49IB_IXx4_iH5yF-HOdx2FoE8R5-HM2hJmOF6hFSXziPHdtxmLmQ5sKYHzouFjlMokfOBncsaE91mPoQ_MctTCqRX9CEnziO_zhcCPk_POmOoz8u1KOQ6-ihazgaHw9OaPlxAvmKfDhUpcWH_MNbBr-Do0eYH7p-5PqFPUbD5TK2o6p0_MeP8IcOw0c-H8eRZxCjRniE8HgPhlKKxqmk4jnai8JZBO9SPMauFEeOHxeOFj_-NsgFdaHxIzx8PMzQRsQfRL4GHvoiNLnwXD6uA-Jx_DiM4-Wh5nBUIXx8vEMtBt60wWwQ3mh7ovE1PCmaHMdx9AiOM8SFXMfVC_oToDl64sqSsfiNB-Wh5_iT4xf-D8dh6PjxAP6CP8fjQf9ghM069IYfwxf8C5cQdwcXC5-CPNiP48WBKh_i49DN4Dz6C82Rx8mQH7-wgzls5VDznPhz4PBx_AAr-PjxVBHUB-aHQld2oWfQODnOoKcLX7iW4fHBFcfxHPOgH_Mt_HjEJDoq9cKH44nyQyfCjBeeVBP4VEUfvIvwIIueUYWTJviFH_lx_EeOQ7wG1sibwNGL7oh_6GzQTGKIkFm64CE-1TiYH_6OWHXw_Dh-2Dp0_TgR43mOXjOOkOGhZdKHPHiIvgy2H_0xJlsQX9Cu48gN__iR5_jBHj7U6wiVtyj9oemOz8LR_Ba-IM8VXDPCJ1PBRdMRyhe8aYZ-HP3R48fBvdCeHM9R7Qve48htuMoS0eiR-_jxoDkYLjoeJ9DUU_iA4zr44zec4_EOPcdTeAib4URPPLCPnseniUL0D6HSHf9xoz3wByF73Ic-VA_-fYh_ePwQ_cGlQD-ap-jDHOEpXENWwrEyPMe1I8ePHz_yQz-8D_-NrIbzo7uF-IcuohkZXBpyH89jnAJFHSH5DP9R5fh0FDrB42mGazj-bbhz6DwahGSKq_jxGwx3-EIsbnh-wdYO4YSPHz8OQszxPMSPhsf3HDl6zTCRhwr6g1fxPAej44txfLhw6JiPisfb4LhzlDy0ZDhj5NqIo3-w_UA6Cn2GKk6hHtcAH7-JH4cDNSkeHS9yH9_x4cyQ6yIemM5xBefx9HCqGT-OHzxOaDwefLfwpBfyC-EP_9CZo88snEPOHl-EHn4QMSd-XAN2PAe8HdBlH9SLrzm6HH-hK0d5mCrOoj9-MMe3hrhycPERjw9-YciJHx-EP8cTsRvOw5OOHjpjY14yEj0ycbBxZUXEVHB25BrM4McOhCwwCCDgjAQAFIOoAIICIQSAQiBDFELAEaYUMMtAKgUSACBnRJEQEGCAeAoRRIQQliFAsVYGGOKIcEYAAIVRgjgAJDNGKYCUBgIIKLwxCBHjCVDGECYuAsJBDhUSBhGhCACGKKOEEUUI4AAxHAkFHQEAQWeQJAYIYGQUAgBBgNGAMAEQMABRJwQSD2gCGAIMAOUIYhQBKwBjBCKmlCIBAACUYmYJZA0gRDgBCDDwWQcRAAAARJxACoFuBABOAACIwlY5Q4BwQAEAJDDYKZGQwogIyQwSABFmFDHDCAKAUMwooYAQABEgACPEAEORcQQ4aAAgHBRBpFFMECUoUJQZs4ARSBEFgUHKOUGAAYQ5QxAQyAFADDlAKgKMUAIQBxpQjBDLIBNCAGKsIBQRRQSSwjkFkCPDEOEQIUwKJJiywADhtHGAEaKAUBASxRRBxBgCDFBAKYWAAkIAYQQQBAkLBFEAKEIexEYxQYhFBghiAEDECCABMQAACh1QiBAgCDBUIEUZQAAAwpxYADFzAIAEIQEwkAQIAJhwylElhINSOMEEAwwggJVSAjHjgBQIEcMQcUARBJRT8AKBgAMAGKMIABIxQYVwhACAFbKAAUEAccAR4wmRlAjCiEEGMGIcEAQYZCSCTCInBQ&duration.1=85&fingerprint.1=AQACmomSJEySRNISHCa6zDh6OO_hoUfr48cvHD83-JApYL6F8oCMHvlg46qOHYf740L6ascN_fj0wh90aD2OC41FC-Exf0IvPBKyH6qNOGLEgrBxXC3w4MiFB2J--Cce4cYXpLwGXER64RHxQxT142eJFMeL40g_HSbUh7h6xONhuDZ-5NpxFrpwfCrSo4pj_EJYHoehvzjeHcbnDGoOH30WPEYeEz3xI72P0sLRNRHx49IB_IXx4_iH5yF-HOdx2FoE8R5-HM2hJmOF6hFSXziPHdtxmLmQ5sKYHzouFjlMokfOBncsaE91mPoQ_MctTCqRX9CEnziO_zhcCPk_POmOoz8u1KOQ6-ihazgaHw9OaPlxAvmKfDhUpcWH_MNbBr-Do0eYH7p-5PqFPUbD5TK2o6p0_MeP8IcOw0c-H8eRZxCjRniE8HgPhlKKxqmk4jnai8JZBO9SPMauFEeOHxeOFj_-NsgFdaHxIzx8PMzQRsQfRL4GHvoiNLnwXD6uA-Jx_DiM4-Wh5nBUIXx8vEMtBt60wWwQ3mh7ovE1PCmaHMdx9AiOM8SFXMfVC_oToDl64sqSsfiNB-Wh5_iT4xf-D8dh6PjxAP6CP8fjQf9ghM069IYfwxf8C5cQdwcXC5-CPNiP48WBKh_i49DN4Dz6C82Rx8mQH7-wgzls5VDznPhz4PBx_AAr-PjxVBHUB-aHQld2oWfQODnOoKcLX7iW4fHBFcfxHPOgH_Mt_HjEJDoq9cKH44nyQyfCjBeeVBP4VEUfvIvwIIueUYWTJviFH_lx_EeOQ7wG1sibwNGL7oh_6GzQTGKIkFm64CE-1TiYH_6OWHXw_Dh-2Dp0_TgR43mOXjOOkOGhZdKHPHiIvgy2H_0xJlsQX9Cu48gN__iR5_jBHj7U6wiVtyj9oemOz8LR_Ba-IM8VXDPCJ1PBRdMRyhe8aYZ-HP3R48fBvdCeHM9R7Qve48htuMoS0eiR-_jxoDkYLjoeJ9DUU_iA4zr44zec4_EOPcdTeAib4URPPLCPnseniUL0D6HSHf9xoz3wByF73Ic-VA_-fYh_ePwQ_cGlQD-ap-jDHOEpXENWwrEyPMe1I8ePHz_yQz-8D_-NrIbzo7uF-IcuohkZXBpyH89jnAJFHSH5DP9R5fh0FDrB42mGazj-bbhz6DwahGSKq_jxGwx3-EIsbnh-wdYO4YSPHz8OQszxPMSPhsf3HDl6zTCRhwr6g1fxPAej44txfLhw6JiPisfb4LhzlDy0ZDhj5NqIo3-w_UA6Cn2GKk6hHtcAH7-JH4cDNSkeHS9yH9_x4cyQ6yIemM5xBefx9HCqGT-OHzxOaDwefLfwpBfyC-EP_9CZo88snEPOHl-EHn4QMSd-XAN2PAe8HdBlH9SLrzm6HH-hK0d5mCrOoj9-MMe3hrhycPERjw9-YciJHx-EP8cTsRvOw5OOHjpjY14yEj0ycbBxZUXEVHB25BrM4McOhCwwCCDgjAQAFIOoAIICIQSAQiBDFELAEaYUMMtAKgUSACBnRJEQEGCAeAoRRIQQliFAsVYGGOKIcEYAAIVRgjgAJDNGKYCUBgIIKLwxCBHjCVDGECYuAsJBDhUSBhGhCACGKKOEEUUI4AAxHAkFHQEAQWeQJAYIYGQUAgBBgNGAMAEQMABRJwQSD2gCGAIMAOUIYhQBKwBjBCKmlCIBAACUYmYJZA0gRDgBCDDwWQcRAAAARJxACoFuBABOAACIwlY5Q4BwQAEAJDDYKZGQwogIyQwSABFmFDHDCAKAUMwooYAQABEgACPEAEORcQQ4aAAgHBRBpFFMECUoUJQZs4ARSBEFgUHKOUGAAYQ5QxAQyAFADDlAKgKMUAIQBxpQjBDLIBNCAGKsIBQRRQSSwjkFkCPDEOEQIUwKJJiywADhtHGAEaKAUBASxRRBxBgCDFBAKYWAAkIAYQQQBAkLBFEAKEIexEYxQYhFBghiAEDECCABMQAACh1QiBAgCDBUIEUZQAAAwpxYADFzAIAEIQEwkAQIAJhwylElhINSOMEEAwwggJVSAjHjgBQIEcMQcUARBJRT8AKBgAMAGKMIABIxQYVwhACAFbKAAUEAccAR4wmRlAjCiEEGMGIcEAQYZCSCTCInBQ", "response": "{\"fingerprints\": [{\"index\": \"0\", \"results\": [{\"id\": \"a9b004fe-e161-417c-9f9e-443e4525334d\", \"recordings\": [{\"id\": \"209a4536-97ac-4e8a-aff1-1d39d029044b\"}, {\"id\": \"30f3f33e-8d0c-4e69-8539-cbd701d18f28\"}], \"score\": 0.940997}, {\"id\": \"fe0a9bec-2633-4c37-89be-b5d295b68a00\", \"score\": 0.763876}, {\"id\": \"18eab869-51dc-4948-83f7-4d8d441d5a1b\", \"score\": 0.490447}]}, {\"index\": \"1\", \"results\": [{\"id\": \"a9b004fe-e161-417c-9f9e-443e4525334d\", \"recordings\": [{\"id\": \"209a4536-97ac-4e8a-aff1-1d39d029044b\"}, {\"id\": \"30f3f33e-8d0c-4e69-8539-cbd701d18f28\"}], \"score\": 0.940997}, {\"id\": \"fe0a9bec-2633-4c37-89be-b5d295b68a00\", \"score\": 0.763876}, {\"id\": \"18eab869-51dc-4948-83f7-4d8d441d5a1b\", \"score\": 0.490447}]}], \"status\": \"ok\"}" }, { - "requestContent": "1F-8B-08-00-00-00-00-00-00-03-4D-C9-31-0E-80-20-0C-00-C0-DF-30-1A-59-8C-4B-07-77-63-E2-13-90-16-2D-91-62-4A-FD-BF-8C-8E-97-8B-37-93-18-EC-CB-86-D3-9C-D9-AF-2E-55-2D-C1-20-B7-2A-AE-90-05-50-8A-55-91-E5-64-6C-EE-08-16-2F-F0-0E-5F-0D-C6-55-86-B1-23-F5-24-7D-94-C5-BA-7F-FA-00-CA-DF-73-C5-5E-00-00-00", - "response": "{\"error\": {\"code\": 3, \"message\": \"invalid fingerprint\"}, \"status\": \"error\"}" + "request": "client=QANd68ji1L&format=json&meta=recordingids&batch=1&duration.0=85&fingerprint.0=AQACmomSJEySRNISHCa6zDh6OO_hoUfr48cvHD83-JApYL6F8oCMHvlg46qOHYf740L6ascN_fj0wh90aD2OC41FC-Exf0IvPBKyH6qNOGLEgrBxXC3w4MiFB2J--Cce4cYXpLwGXER64RHxQxT142eJFMeL40g_HSbUh7h6xONhuDZ-5NpxFrpwfCrSo4pj_EJYHoehvzjeHcbnDGoOH30WPEYeEz3xI72P0sLRNRHx49IB_IXx4_iH5yF-HOdx2FoE8R5-HM2hJmOF6hFSXziPHdtxmLmQ5sKYHzouFjlMokfOBncsaE91mPoQ_MctTCqRX9CEnziO_zhcCPk_POmOoz8u1KOQ6-ihazgaHw9OaPlxAvmKfDhUpcWH_MNbBr-Do0eYH7p-5PqFPUbD5TK2o6p0_MeP8IcOw0c-H8eRZxCjRniE8HgPhlKKxqmk4jnai8JZBO9SPMauFEeOHxeOFj_-NsgFdaHxIzx8PMzQRsQfRL4GHvoiNLnwXD6uA-Jx_DiM4-Wh5nBUIXx8vEMtBt60wWwQ3mh7ovE1PCmaHMdx9AiOM8SFXMfVC_oToDl64sqSsfiNB-Wh5_iT4xf-D8dh6PjxAP6CP8fjQf9ghM069IYfwxf8C5cQdwcXC5-CPNiP48WBKh_i49DN4Dz6C82Rx8mQH7-wgzls5VDznPhz4PBx_AAr-PjxVBHUB-aHQld2oWfQODnOoKcLX7iW4fHBFcfxHPOgH_Mt_HjEJDoq9cKH44nyQyfCjBeeVBP4VEUfvIvwIIueUYWTJviFH_lx_EeOQ7wG1sibwNGL7oh_6GzQTGKIkFm64CE-1TiYH_6OWHXw_Dh-2Dp0_TgR43mOXjOOkOGhZdKHPHiIvgy2H_0xJlsQX9Cu48gN__iR5_jBHj7U6wiVtyj9oemOz8LR_Ba-IM8VXDPCJ1PBRdMRyhe8aYZ-HP3R48fBvdCeHM9R7Qve48htuMoS0eiR-_jxoDkYLjoeJ9DUU_iA4zr44zec4_EOPcdTeAib4URPPLCPnseniUL0D6HSHf9xoz3wByF73Ic-VA_-fYh_ePwQ_cGlQD-ap-jDHOEpXENWwrEyPMe1I8ePHz_yQz-8D_-NrIbzo7uF-IcuohkZXBpyH89jnAJFHSH5DP9R5fh0FDrB42mGazj-bbhz6DwahGSKq_jxGwx3-EIsbnh-wdYO4YSPHz8OQszxPMSPhsf3HDl6zTCRhwr6g1fxPAej44txfLhw6JiPisfb4LhzlDy0ZDhj5NqIo3-w_UA6Cn2GKk6hHtcAH7-JH4cDNSkeHS9yH9_x4cyQ6yIemM5xBefx9HCqGT-OHzxOaDwefLfwpBfyC-EP_9CZo88snEPOHl-EHn4QMSd-XAN2PAe8HdBlH9SLrzm6HH-hK0d5mCrOoj9-MMe3hrhycPERjw9-YciJHx-EP8cTsRvOw5OOHjpjY14yEj0ycbBxZUXEVHB25BrM4McOhCwwCCDgjAQAFIOoAIICIQSAQiBDFELAEaYUMMtAKgUSACBnRJEQEGCAeAoRRIQQliFAsVYGGOKIcEYAAIVRgjgAJDNGKYCUBgIIKLwxCBHjCVDGECYuAsJBDhUSBhGhCACGKKOEEUUI4AAxHAkFHQEAQWeQJAYIYGQUAgBBgNGAMAEQMABRJwQSD2gCGAIMAOUIYhQBKwBjBCKmlCIBAACUYmYJZA0gRDgBCDDwWQcRAAAARJxACoFuBABOAACIwlY5Q4BwQAEAJDDYKZGQwogIyQwSABFmFDHDCAKAUMwooYAQABEgACPEAEORcQQ4aAAgHBRBpFFMECUoUJQZs4ARSBEFgUHKOUGAAYQ5QxAQyAFADDlAKgKMUAIQBxpQjBDLIBNCAGKsIBQRRQSSwjkFkCPDEOEQIUwKJJiywADhtHGAEaKAUBASxRRBxBgCDFBAKYWAAkIAYQQQBAkLBFEAKEIexEYxQYhFBghiAEDECCABMQAACh1QiBAgCDBUIEUZQAAAwpxYADFzAIAEIQEwkAQIAJhwylElhINSOMEEAwwggJVSAjHjgBQIEcMQcUARBJRT8AKBgAMAGKMIABIxQYVwhACAFbKAAUEAccAR4wmRlAjCiEEGMGIcEAQYZCSCTCInBQ", + "response": "{\"fingerprints\": [{\"index\": \"0\", \"results\": [{\"id\": \"a9b004fe-e161-417c-9f9e-443e4525334d\", \"recordings\": [{\"id\": \"209a4536-97ac-4e8a-aff1-1d39d029044b\"}, {\"id\": \"30f3f33e-8d0c-4e69-8539-cbd701d18f28\"}], \"score\": 0.940997}, {\"id\": \"fe0a9bec-2633-4c37-89be-b5d295b68a00\", \"score\": 0.763876}, {\"id\": \"18eab869-51dc-4948-83f7-4d8d441d5a1b\", \"score\": 0.490447}]}], \"status\": \"ok\"}" } ] diff --git a/src/NzbDrone.Core.Test/HealthCheck/Checks/DotnetVersionCheckFixture.cs b/src/NzbDrone.Core.Test/HealthCheck/Checks/DotnetVersionCheckFixture.cs deleted file mode 100644 index 2f7386b48..000000000 --- a/src/NzbDrone.Core.Test/HealthCheck/Checks/DotnetVersionCheckFixture.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System; -using NUnit.Framework; -using NzbDrone.Common.EnvironmentInfo; -using NzbDrone.Core.HealthCheck.Checks; -using NzbDrone.Core.Test.Framework; - -namespace NzbDrone.Core.Test.HealthCheck.Checks -{ - [TestFixture] - public class DotnetVersionCheckFixture : CoreTest - { - private void GivenOutput(string version) - { - WindowsOnly(); - - Mocker.GetMock() - .SetupGet(s => s.Version) - .Returns(new Version(version)); - } - - [TestCase("4.7.2")] - [TestCase("4.8")] - public void should_return_ok(string version) - { - GivenOutput(version); - - Subject.Check().ShouldBeOk(); - } - - [TestCase("4.6.2")] - [TestCase("4.7")] - [TestCase("4.7.1")] - public void should_return_notice(string version) - { - GivenOutput(version); - - Subject.Check().ShouldBeNotice(); - } - - public void should_return_warning(string version) - { - GivenOutput(version); - - Subject.Check().ShouldBeWarning(); - } - - [TestCase("4.5")] - [TestCase("4.5.2")] - [TestCase("4.6.1")] - public void should_return_error(string version) - { - GivenOutput(version); - - Subject.Check().ShouldBeError(); - } - - [Test] - public void should_return_ok_for_net462_on_Win1511() - { - Mocker.GetMock() - .SetupGet(v => v.Version) - .Returns("10.0.14392"); - - GivenOutput("4.6.2"); - - Subject.Check().ShouldBeOk(); - } - } -} diff --git a/src/NzbDrone.Core.Test/Lidarr.Core.Test.csproj b/src/NzbDrone.Core.Test/Lidarr.Core.Test.csproj index 260dc13a5..7413fa2ea 100644 --- a/src/NzbDrone.Core.Test/Lidarr.Core.Test.csproj +++ b/src/NzbDrone.Core.Test/Lidarr.Core.Test.csproj @@ -1,12 +1,20 @@  - net462 + net462;netcoreapp3.0 + + + + + - + + + + diff --git a/src/NzbDrone.Core.Test/ParserTests/FingerprintingServiceFixture.cs b/src/NzbDrone.Core.Test/ParserTests/FingerprintingServiceFixture.cs index 7ca575cdd..6f6508f4f 100644 --- a/src/NzbDrone.Core.Test/ParserTests/FingerprintingServiceFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/FingerprintingServiceFixture.cs @@ -3,11 +3,12 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; +using System.Text; using FluentAssertions; using Moq; using Newtonsoft.Json; using NUnit.Framework; -using NzbDrone.Common.EnvironmentInfo; +using NzbDrone.Common.Extensions; using NzbDrone.Common.Http; using NzbDrone.Core.Parser; using NzbDrone.Core.Parser.Model; @@ -22,7 +23,7 @@ namespace NzbDrone.Core.Test.ParserTests { public class FingerPrintTest { - public string RequestContent { get; set; } + public string Request { get; set; } public string Response { get; set; } } @@ -30,7 +31,7 @@ namespace NzbDrone.Core.Test.ParserTests public void UseAcoustidResponses() { // responses were generated by editing HttpClient to write out the content bytes as a string - // using BitConverter.ToString(request.ContentData) + // using System.Text.Encoding.UTF8.GetString(request.ContentData.Decompress()); var path = Path.Combine(TestContext.CurrentContext.TestDirectory, "Files", "Fingerprinting", "AcoustidResponses.json"); var responses = JsonConvert.DeserializeObject>(File.ReadAllText(path)); @@ -38,16 +39,13 @@ namespace NzbDrone.Core.Test.ParserTests { Mocker.GetMock() .Setup(o => o.Post( - It.Is(v => - v.Url.Equals(new HttpUri("https://api.acoustid.org/v2/lookup")) && - v.Headers.Contains(new KeyValuePair("Content-Encoding", "gzip")) && - v.Headers.ContentType == "application/x-www-form-urlencoded" && - // Skip past the first bit of gzip header which varies by OS: - // http://www.onicos.com/staff/iz/formats/gzip.html - BitConverter.ToString(v.ContentData).Substring(31) == response.RequestContent.Substring(31) - ))) + It.Is(v => + v.Url.Equals(new HttpUri("https://api.acoustid.org/v2/lookup")) && + v.Headers.Contains(new KeyValuePair("Content-Encoding", "gzip")) && + v.Headers.ContentType == "application/x-www-form-urlencoded" && + Encoding.UTF8.GetString(v.ContentData.Decompress()) == response.Request + ))) .Returns(r => new HttpResponse(new HttpResponse(r, new HttpHeader(), response.Response))); - } } diff --git a/src/NzbDrone.Core.Test/UpdateTests/UpdatePackageProviderFixture.cs b/src/NzbDrone.Core.Test/UpdateTests/UpdatePackageProviderFixture.cs index c2af4ede7..3a88bda18 100644 --- a/src/NzbDrone.Core.Test/UpdateTests/UpdatePackageProviderFixture.cs +++ b/src/NzbDrone.Core.Test/UpdateTests/UpdatePackageProviderFixture.cs @@ -25,6 +25,7 @@ namespace NzbDrone.Core.Test.UpdateTests } [Test] + [Platform(Exclude="NetCore")] public void finds_update_when_version_lower() { UseRealHttp(); diff --git a/src/NzbDrone.Core/Blacklisting/BlacklistService.cs b/src/NzbDrone.Core/Blacklisting/BlacklistService.cs index 731391fdd..9df920ac1 100644 --- a/src/NzbDrone.Core/Blacklisting/BlacklistService.cs +++ b/src/NzbDrone.Core/Blacklisting/BlacklistService.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Linq; using NzbDrone.Common.Extensions; using NzbDrone.Core.Datastore; diff --git a/src/NzbDrone.Core/Download/Clients/Deluge/Deluge.cs b/src/NzbDrone.Core/Download/Clients/Deluge/Deluge.cs index 1067af9cd..27165ac11 100644 --- a/src/NzbDrone.Core/Download/Clients/Deluge/Deluge.cs +++ b/src/NzbDrone.Core/Download/Clients/Deluge/Deluge.cs @@ -3,7 +3,6 @@ using System.Linq; using System.Collections.Generic; using NzbDrone.Common.Disk; using NzbDrone.Common.Http; -using NzbDrone.Common.Extensions; using NzbDrone.Core.MediaFiles.TorrentInfo; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Configuration; @@ -12,6 +11,7 @@ using NLog; using FluentValidation.Results; using System.Net; using NzbDrone.Core.RemotePathMappings; +using NzbDrone.Common.Extensions; namespace NzbDrone.Core.Download.Clients.Deluge { diff --git a/src/NzbDrone.Core/Download/Clients/Hadouken/HadoukenProxy.cs b/src/NzbDrone.Core/Download/Clients/Hadouken/HadoukenProxy.cs index 8d2fc9238..fc684b375 100644 --- a/src/NzbDrone.Core/Download/Clients/Hadouken/HadoukenProxy.cs +++ b/src/NzbDrone.Core/Download/Clients/Hadouken/HadoukenProxy.cs @@ -12,7 +12,7 @@ namespace NzbDrone.Core.Download.Clients.Hadouken { HadoukenSystemInfo GetSystemInfo(HadoukenSettings settings); HadoukenTorrent[] GetTorrents(HadoukenSettings settings); - IDictionary GetConfig(HadoukenSettings settings); + IReadOnlyDictionary GetConfig(HadoukenSettings settings); string AddTorrentFile(HadoukenSettings settings, byte[] fileContent); void AddTorrentUri(HadoukenSettings settings, string torrentUrl); void RemoveTorrent(HadoukenSettings settings, string downloadId); @@ -42,9 +42,9 @@ namespace NzbDrone.Core.Download.Clients.Hadouken return GetTorrents(result.Torrents); } - public IDictionary GetConfig(HadoukenSettings settings) + public IReadOnlyDictionary GetConfig(HadoukenSettings settings) { - return ProcessRequest>(settings, "webui.getSettings"); + return ProcessRequest>(settings, "webui.getSettings"); } public string AddTorrentFile(HadoukenSettings settings, byte[] fileContent) diff --git a/src/NzbDrone.Core/Lidarr.Core.csproj b/src/NzbDrone.Core/Lidarr.Core.csproj index 8b2709f18..168574e23 100644 --- a/src/NzbDrone.Core/Lidarr.Core.csproj +++ b/src/NzbDrone.Core/Lidarr.Core.csproj @@ -1,16 +1,18 @@  - net462 + net462;netcoreapp3.0 + + - + @@ -22,7 +24,7 @@ - + diff --git a/src/NzbDrone.Core/Organizer/FileNameBuilder.cs b/src/NzbDrone.Core/Organizer/FileNameBuilder.cs index 4bdb6b2d6..711d5d429 100644 --- a/src/NzbDrone.Core/Organizer/FileNameBuilder.cs +++ b/src/NzbDrone.Core/Organizer/FileNameBuilder.cs @@ -6,8 +6,8 @@ using System.Linq; using System.Text.RegularExpressions; using NLog; using NzbDrone.Common.Cache; -using NzbDrone.Common.EnsureThat; using NzbDrone.Common.Extensions; +using NzbDrone.Common.EnsureThat; using NzbDrone.Core.MediaFiles; using NzbDrone.Core.Profiles.Releases; using NzbDrone.Core.Qualities; diff --git a/src/NzbDrone.Core/Parser/FingerprintingService.cs b/src/NzbDrone.Core/Parser/FingerprintingService.cs index 981c6dc77..271e7df0f 100644 --- a/src/NzbDrone.Core/Parser/FingerprintingService.cs +++ b/src/NzbDrone.Core/Parser/FingerprintingService.cs @@ -2,7 +2,6 @@ using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; -using System.IO.Compression; using System.Linq; using System.Text; using System.Text.RegularExpressions; @@ -318,17 +317,6 @@ namespace NzbDrone.Core.Parser return null; } - private static byte[] Compress(byte[] data) - { - using (var compressedStream = new MemoryStream()) - using (var zipStream = new GZipStream(compressedStream, CompressionMode.Compress)) - { - zipStream.Write(data, 0, data.Length); - zipStream.Close(); - return compressedStream.ToArray(); - } - } - public void Lookup(List tracks, double threshold) { if (!IsSetup()) @@ -365,7 +353,7 @@ namespace NzbDrone.Core.Parser } // they prefer a gzipped body - httpRequest.SetContent(Compress(Encoding.UTF8.GetBytes(sb.ToString()))); + httpRequest.SetContent(Encoding.UTF8.GetBytes(sb.ToString()).Compress()); httpRequest.Headers.Add("Content-Encoding", "gzip"); httpRequest.Headers.ContentType = "application/x-www-form-urlencoded"; httpRequest.SuppressHttpError = true; diff --git a/src/NzbDrone.Core/Update/InstallUpdateService.cs b/src/NzbDrone.Core/Update/InstallUpdateService.cs index 9ca2cc128..4f66d286a 100644 --- a/src/NzbDrone.Core/Update/InstallUpdateService.cs +++ b/src/NzbDrone.Core/Update/InstallUpdateService.cs @@ -132,6 +132,7 @@ namespace NzbDrone.Core.Update _diskTransferService.TransferFolder(_appFolderInfo.GetUpdateClientFolder(), updateSandboxFolder, TransferMode.Move, false); // Set executable flag on update app +<<<<<<< HEAD if (OsInfo.IsOsx) { _diskProvider.SetPermissions(_appFolderInfo.GetUpdateClientExePath(updatePackage.Version), "0755", null, null); @@ -141,6 +142,17 @@ namespace NzbDrone.Core.Update _logger.ProgressInfo("Lidarr will restart shortly."); _processProvider.Start(_appFolderInfo.GetUpdateClientExePath(updatePackage.Version), GetUpdaterArgs(updateSandboxFolder)); +======= + if (OsInfo.IsOsx || (OsInfo.IsLinux && PlatformInfo.IsNetCore)) + { + _diskProvider.SetPermissions(_appFolderInfo.GetUpdateClientExePath(updatePackage.Runtime), "0755", null, null); + } + + _logger.Info("Starting update client {0}", _appFolderInfo.GetUpdateClientExePath(updatePackage.Runtime)); + _logger.ProgressInfo("Lidarr will restart shortly."); + + _processProvider.Start(_appFolderInfo.GetUpdateClientExePath(updatePackage.Runtime), GetUpdaterArgs(updateSandboxFolder)); +>>>>>>> 4346c76d4... New: Multi target net framework 4.6.2 and net core 3.0 } private void EnsureValidBranch(UpdatePackage package) diff --git a/src/NzbDrone.Core/Update/UpdatePackage.cs b/src/NzbDrone.Core/Update/UpdatePackage.cs index 1583280cb..016398d0f 100644 --- a/src/NzbDrone.Core/Update/UpdatePackage.cs +++ b/src/NzbDrone.Core/Update/UpdatePackage.cs @@ -1,5 +1,5 @@ using System; - +using NzbDrone.Common.EnvironmentInfo; namespace NzbDrone.Core.Update { @@ -12,5 +12,6 @@ namespace NzbDrone.Core.Update public UpdateChanges Changes { get; set; } public string Hash { get; set; } public string Branch { get; set; } + public PlatformType Runtime { get; set; } } } diff --git a/src/NzbDrone.Core/Update/UpdatePackageProvider.cs b/src/NzbDrone.Core/Update/UpdatePackageProvider.cs index fbbafacfc..caa2185a7 100644 --- a/src/NzbDrone.Core/Update/UpdatePackageProvider.cs +++ b/src/NzbDrone.Core/Update/UpdatePackageProvider.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Runtime.InteropServices; using NzbDrone.Common.Cloud; using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.Http; @@ -34,6 +35,8 @@ namespace NzbDrone.Core.Update .Resource("/update/{branch}") .AddQueryParam("version", currentVersion) .AddQueryParam("os", OsInfo.Os.ToString().ToLowerInvariant()) + .AddQueryParam("arch", RuntimeInformation.OSArchitecture) + .AddQueryParam("runtime", PlatformInfo.Platform.ToString().ToLowerInvariant()) .AddQueryParam("runtimeVer", _platformInfo.Version) .SetSegment("branch", branch); @@ -70,4 +73,4 @@ namespace NzbDrone.Core.Update return updates.Resource; } } -} \ No newline at end of file +} diff --git a/src/NzbDrone.Host.Test/Lidarr.Host.Test.csproj b/src/NzbDrone.Host.Test/Lidarr.Host.Test.csproj index ffcea820d..f033a2aff 100644 --- a/src/NzbDrone.Host.Test/Lidarr.Host.Test.csproj +++ b/src/NzbDrone.Host.Test/Lidarr.Host.Test.csproj @@ -1,12 +1,21 @@  - net462 + net462;netcoreapp3.0 + + + + + + + + + - + diff --git a/src/NzbDrone.Host/Lidarr.Host.csproj b/src/NzbDrone.Host/Lidarr.Host.csproj index e10f3fb81..d7d1c95c4 100644 --- a/src/NzbDrone.Host/Lidarr.Host.csproj +++ b/src/NzbDrone.Host/Lidarr.Host.csproj @@ -1,13 +1,19 @@ - + - net462 + net462;netcoreapp3.0 + Library - - + + + + + + + diff --git a/src/NzbDrone.Host/WebHost/Middleware/SignalRMiddleware.cs b/src/NzbDrone.Host/WebHost/Middleware/SignalRMiddleware.cs index d595b7281..a31c1e3ce 100644 --- a/src/NzbDrone.Host/WebHost/Middleware/SignalRMiddleware.cs +++ b/src/NzbDrone.Host/WebHost/Middleware/SignalRMiddleware.cs @@ -15,6 +15,7 @@ namespace NzbDrone.Host.Middleware private readonly IContainer _container; private readonly Logger _logger; private static string API_KEY; + private static string URL_BASE; public int Order => 1; public SignalRMiddleware(IContainer container, @@ -24,6 +25,7 @@ namespace NzbDrone.Host.Middleware _container = container; _logger = logger; API_KEY = configFileProvider.ApiKey; + URL_BASE = configFileProvider.UrlBase; } public void Attach(IApplicationBuilder appBuilder) @@ -53,11 +55,17 @@ namespace NzbDrone.Host.Middleware } }); - appBuilder.UseSignalR(routes => +#if NETCOREAPP3_0 + appBuilder.UseEndpoints(x => { - routes.MapHub("/signalr/messages"); + x.MapHub(URL_BASE + "/signalr/messages"); }); - +#else + appBuilder.UseSignalR(x => + { + x.MapHub("/signalr/messages"); + }); +#endif // This is a side effect of haing multiple IoC containers, TinyIoC and whatever // Kestrel/SignalR is using. Ideally we'd have one IoC container, but that's non-trivial with TinyIoC // TODO: Use a single IoC container if supported for TinyIoC or if we switch to another system (ie Autofac). diff --git a/src/NzbDrone.Host/WebHost/WebHostController.cs b/src/NzbDrone.Host/WebHost/WebHostController.cs index 986447da7..718fb0cfb 100644 --- a/src/NzbDrone.Host/WebHost/WebHostController.cs +++ b/src/NzbDrone.Host/WebHost/WebHostController.cs @@ -5,7 +5,6 @@ using System.Linq; using System.Security.Cryptography.X509Certificates; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Server.Kestrel.Core; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NLog; @@ -77,6 +76,10 @@ namespace NzbDrone.Host }); } }) + .ConfigureKestrel(serverOptions => + { + serverOptions.AllowSynchronousIO = true; + }) .ConfigureLogging(logging => { logging.AddProvider(new NLogLoggerProvider()); @@ -86,15 +89,23 @@ namespace NzbDrone.Host { services .AddSignalR() - .AddJsonProtocol(options => +#if !NETCOREAPP3_0 + .AddJsonProtocol( +#else + .AddNewtonsoftJsonProtocol( +#endif + options => { options.PayloadSerializerSettings = Json.GetSerializerSettings(); }); }) .Configure(app => { - app.UsePathBase(_configFileProvider.UrlBase); +#if NETCOREAPP3_0 + app.UseRouting(); +#endif app.Properties["host.AppName"] = BuildInfo.AppName; + app.UsePathBase(_configFileProvider.UrlBase); foreach (var middleWare in _middlewares.OrderBy(c => c.Order)) { diff --git a/src/NzbDrone.Integration.Test/ApiTests/FileSystemFixture.cs b/src/NzbDrone.Integration.Test/ApiTests/FileSystemFixture.cs index a94071764..f49d86dbf 100644 --- a/src/NzbDrone.Integration.Test/ApiTests/FileSystemFixture.cs +++ b/src/NzbDrone.Integration.Test/ApiTests/FileSystemFixture.cs @@ -8,6 +8,7 @@ using NzbDrone.Common.Disk; using System.Reflection; using System.IO; using System.Collections.Generic; +using NzbDrone.Common; namespace NzbDrone.Integration.Test.ApiTests { @@ -61,7 +62,7 @@ namespace NzbDrone.Integration.Test.ApiTests result.Directories.Should().NotBeNullOrEmpty(); result.Files.Should().NotBeNullOrEmpty(); - result.Files.Should().Contain(v => v.Path == _file && v.Type == FileSystemEntityType.File); + result.Files.Should().Contain(v => PathEqualityComparer.Instance.Equals(v.Path, _file) && v.Type == FileSystemEntityType.File); } [Test] diff --git a/src/NzbDrone.Integration.Test/ApiTests/RootFolderFixture.cs b/src/NzbDrone.Integration.Test/ApiTests/RootFolderFixture.cs index ae3f50ae9..7030b29d8 100644 --- a/src/NzbDrone.Integration.Test/ApiTests/RootFolderFixture.cs +++ b/src/NzbDrone.Integration.Test/ApiTests/RootFolderFixture.cs @@ -15,6 +15,7 @@ namespace NzbDrone.Integration.Test.ApiTests } [Test] + [Ignore("SignalR on CI seems unstable")] public void should_add_and_delete_root_folders() { ConnectSignalR().Wait(); diff --git a/src/NzbDrone.Integration.Test/Lidarr.Integration.Test.csproj b/src/NzbDrone.Integration.Test/Lidarr.Integration.Test.csproj index a65ea4b76..162b53554 100644 --- a/src/NzbDrone.Integration.Test/Lidarr.Integration.Test.csproj +++ b/src/NzbDrone.Integration.Test/Lidarr.Integration.Test.csproj @@ -1,10 +1,20 @@ - + - net462 + net462;netcoreapp3.0 + Library + + + + + + + + + diff --git a/src/NzbDrone.Libraries.Test/Lidarr.Libraries.Test.csproj b/src/NzbDrone.Libraries.Test/Lidarr.Libraries.Test.csproj index f4d526455..3bdd9a6ab 100644 --- a/src/NzbDrone.Libraries.Test/Lidarr.Libraries.Test.csproj +++ b/src/NzbDrone.Libraries.Test/Lidarr.Libraries.Test.csproj @@ -1,7 +1,16 @@  - net462 + net462;netcoreapp3.0 + + + + + + + + + diff --git a/src/NzbDrone.Mono.Test/Lidarr.Mono.Test.csproj b/src/NzbDrone.Mono.Test/Lidarr.Mono.Test.csproj index c04c9dd3a..c882fa8b0 100644 --- a/src/NzbDrone.Mono.Test/Lidarr.Mono.Test.csproj +++ b/src/NzbDrone.Mono.Test/Lidarr.Mono.Test.csproj @@ -1,17 +1,29 @@  - net462 + net462;netcoreapp3.0 + + + + + + + + + + + + + + - - - ..\Libraries\Mono.Posix.dll - - PreserveNewest diff --git a/src/NzbDrone.Mono/Lidarr.Mono.csproj b/src/NzbDrone.Mono/Lidarr.Mono.csproj index b55247a38..19a270fdc 100644 --- a/src/NzbDrone.Mono/Lidarr.Mono.csproj +++ b/src/NzbDrone.Mono/Lidarr.Mono.csproj @@ -1,17 +1,22 @@  - net462 + net462;netcoreapp3.0 - + - - + + + + + + - - ..\Libraries\Mono.Posix.dll - + diff --git a/src/NzbDrone.SignalR/Lidarr.SignalR.csproj b/src/NzbDrone.SignalR/Lidarr.SignalR.csproj index ee4f0d725..a34df9c4e 100644 --- a/src/NzbDrone.SignalR/Lidarr.SignalR.csproj +++ b/src/NzbDrone.SignalR/Lidarr.SignalR.csproj @@ -1,8 +1,9 @@ - + - net462 + net462;netcoreapp3.0 + Library - + diff --git a/src/NzbDrone.Test.Common/AutoMoq/AutoMoqer.cs b/src/NzbDrone.Test.Common/AutoMoq/AutoMoqer.cs index 04e3de3a7..d63f07c60 100644 --- a/src/NzbDrone.Test.Common/AutoMoq/AutoMoqer.cs +++ b/src/NzbDrone.Test.Common/AutoMoq/AutoMoqer.cs @@ -9,6 +9,7 @@ using System.Runtime.CompilerServices; using Unity; using Moq; using Moq.Language.Flow; +using NzbDrone.Common.Composition; using NzbDrone.Common.Disk; using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Test.Common.AutoMoq.Unity; @@ -150,6 +151,10 @@ namespace NzbDrone.Test.Common.AutoMoq RegisterPlatformLibrary(container); AddTheAutoMockingContainerExtensionToTheContainer(container); + +#if NETCOREAPP3_0 + ContainerBuilderBase.RegisterSQLiteResolver(); +#endif } private static void AddTheAutoMockingContainerExtensionToTheContainer(IUnityContainer container) diff --git a/src/NzbDrone.Test.Common/Lidarr.Test.Common.csproj b/src/NzbDrone.Test.Common/Lidarr.Test.Common.csproj index 009f3b32f..3f8c9211c 100644 --- a/src/NzbDrone.Test.Common/Lidarr.Test.Common.csproj +++ b/src/NzbDrone.Test.Common/Lidarr.Test.Common.csproj @@ -1,6 +1,6 @@  - net462 + net462;netcoreapp3.0 @@ -10,7 +10,7 @@ - + diff --git a/src/NzbDrone.Test.Common/NzbDroneRunner.cs b/src/NzbDrone.Test.Common/NzbDroneRunner.cs index de7752232..26535d0a3 100644 --- a/src/NzbDrone.Test.Common/NzbDroneRunner.cs +++ b/src/NzbDrone.Test.Common/NzbDroneRunner.cs @@ -33,17 +33,29 @@ namespace NzbDrone.Test.Common Directory.CreateDirectory(AppData); GenerateConfigFile(); - - var lidarrConsoleExe = OsInfo.IsWindows ? "Lidarr.Console.exe" : "Lidarr.exe"; - var frameworkFolder = "net462"; + + string lidarrConsoleExe; + if (OsInfo.IsWindows) + { + lidarrConsoleExe = "Lidarr.Console.exe"; + } + else if (PlatformInfo.IsMono) + { + lidarrConsoleExe = "Lidarr.exe"; + } + else + { + lidarrConsoleExe = "Lidarr"; + } if (BuildInfo.IsDebug) { + var frameworkFolder = PlatformInfo.IsNetCore ? "netcoreapp3.0" : "net462"; Start(Path.Combine(TestContext.CurrentContext.TestDirectory, "..", "..", "_output", frameworkFolder, lidarrConsoleExe)); } else { - Start(Path.Combine("bin", lidarrConsoleExe)); + Start(Path.Combine(TestContext.CurrentContext.TestDirectory, "..", "bin", lidarrConsoleExe)); } while (true) diff --git a/src/NzbDrone.Test.Dummy/Lidarr.Test.Dummy.csproj b/src/NzbDrone.Test.Dummy/Lidarr.Test.Dummy.csproj index 8c54330b4..55a744097 100644 --- a/src/NzbDrone.Test.Dummy/Lidarr.Test.Dummy.csproj +++ b/src/NzbDrone.Test.Dummy/Lidarr.Test.Dummy.csproj @@ -1,6 +1,6 @@  Exe - net462 + net462;netcoreapp3.0 diff --git a/src/NzbDrone.Update.Test/Lidarr.Update.Test.csproj b/src/NzbDrone.Update.Test/Lidarr.Update.Test.csproj index bda20ae5b..67c19d920 100644 --- a/src/NzbDrone.Update.Test/Lidarr.Update.Test.csproj +++ b/src/NzbDrone.Update.Test/Lidarr.Update.Test.csproj @@ -1,7 +1,16 @@  - net462 + net462;netcoreapp3.0 + + + + + + + + + diff --git a/src/NzbDrone.Update.Test/StartNzbDroneService.cs b/src/NzbDrone.Update.Test/StartNzbDroneService.cs index 439cac23a..7855c76b8 100644 --- a/src/NzbDrone.Update.Test/StartNzbDroneService.cs +++ b/src/NzbDrone.Update.Test/StartNzbDroneService.cs @@ -3,6 +3,7 @@ using Moq; using NUnit.Framework; using NzbDrone.Common; using NzbDrone.Common.EnvironmentInfo; +using NzbDrone.Common.Extensions; using NzbDrone.Common.Processes; using NzbDrone.Test.Common; using NzbDrone.Update.UpdateEngine; @@ -27,7 +28,7 @@ namespace NzbDrone.Update.Test public void should_start_console_if_app_type_was_service_but_start_failed_because_of_permissions() { string targetFolder = "c:\\Lidarr\\".AsOsAgnostic(); - string targetProcess = "c:\\Lidarr\\Lidarr.Console.exe".AsOsAgnostic(); + string targetProcess = "c:\\Lidarr\\Lidarr.Console".AsOsAgnostic().ProcessNameToExe(); Mocker.GetMock().Setup(c => c.Start(ServiceProvider.SERVICE_NAME)).Throws(new InvalidOperationException()); diff --git a/src/NzbDrone.Update.Test/UpdateProviderStartFixture.cs b/src/NzbDrone.Update.Test/UpdateProviderStartFixture.cs deleted file mode 100644 index 6e6456b59..000000000 --- a/src/NzbDrone.Update.Test/UpdateProviderStartFixture.cs +++ /dev/null @@ -1,241 +0,0 @@ -/* -using System.Collections.Generic; -using System.IO; -using System.Linq; -using FizzWare.NBuilder; -using Moq; -using NUnit.Framework; -using NzbDrone.Common; -using NzbDrone.Common.Model; -using NzbDrone.Test.Common; -using NzbDrone.Update.UpdateEngine; - -namespace NzbDrone.Update.Test -{ - [TestFixture] - public class UpdateProviderStartFixture : TestBase - { - private const string UPDATE_FOLDER = @"C:\Temp\nzbdrone_update\nzbdrone\"; - private const string BACKUP_FOLDER = @"C:\Temp\nzbdrone_update\nzbdrone_backup\"; - private const string TARGET_FOLDER = @"C:\NzbDrone\"; - - Mock _IAppDirectoryInfo; - - - [SetUp] - public void Setup() - { - - _IAppDirectoryInfo = Mocker.GetMock(); - - _IAppDirectoryInfo.SetupGet(c => c.SystemTemp).Returns(@"C:\Temp\"); - - Mocker.GetMock() - .Setup(c => c.FolderExists(UPDATE_FOLDER)) - .Returns(true); - - Mocker.GetMock() - .Setup(c => c.FolderExists(TARGET_FOLDER)) - .Returns(true); - } - - private void WithInstalledService() - { - Mocker.GetMock() - .Setup(c => c.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME)) - .Returns(true); - } - - private void WithServiceRunning(bool state) - { - Mocker.GetMock() - .Setup(c => c.IsServiceRunning(ServiceProvider.NZBDRONE_SERVICE_NAME)).Returns(state); - } - - [Test] - public void should_stop_nzbdrone_service_if_installed_and_running() - { - WithInstalledService(); - WithServiceRunning(true); - - - Mocker.Resolve().Start(TARGET_FOLDER); - - - Mocker.GetMock().Verify(c => c.Stop(ServiceProvider.NZBDRONE_SERVICE_NAME), Times.Once()); - } - - [Test] - public void should_not_stop_nzbdrone_service_if_installed_but_not_running() - { - WithInstalledService(); - WithServiceRunning(false); - - - Mocker.Resolve().Start(TARGET_FOLDER); - - - Mocker.GetMock().Verify(c => c.Stop(ServiceProvider.NZBDRONE_SERVICE_NAME), Times.Never()); - } - - [Test] - public void should_not_stop_nzbdrone_service_if_service_isnt_installed() - { - - Mocker.Resolve().Start(TARGET_FOLDER); - - - Mocker.GetMock().Verify(c => c.Stop(It.IsAny()), Times.Never()); - } - - [Test] - public void should_kill_nzbdrone_process_if_running() - { - var proccesses = Builder.CreateListOfSize(2).Build().ToList(); - - Mocker.GetMock() - .Setup(c => c.GetProcessByName(ProcessProvider.NzbDroneProcessName)) - .Returns(proccesses); - - - Mocker.Resolve().Start(TARGET_FOLDER); - - - Mocker.GetMock().Verify(c => c.KillAll(ProcessProvider.NzbDroneProcessName), Times.Once()); - } - - [Test] - public void should_not_kill_nzbdrone_process_not_running() - { - Mocker.GetMock() - .Setup(c => c.GetProcessByName(ProcessProvider.NzbDroneProcessName)) - .Returns(new List()); - - - Mocker.Resolve().Start(TARGET_FOLDER); - - - Mocker.GetMock().Verify(c => c.Kill(It.IsAny()), Times.Never()); - } - - [Test] - public void should_create_backup_of_current_installation() - { - Mocker.GetMock() - .Setup(c => c.CopyDirectory(TARGET_FOLDER, BACKUP_FOLDER)); - - Mocker.Resolve().Start(TARGET_FOLDER); - } - - [Test] - public void should_copy_update_package_to_target() - { - Mocker.GetMock() - .Setup(c => c.CopyDirectory(UPDATE_FOLDER, TARGET_FOLDER)); - - Mocker.GetMock() - .Setup(c => c.DeleteFolder(UPDATE_FOLDER, true)); - - Mocker.Resolve().Start(TARGET_FOLDER); - } - - [Test] - public void should_restore_if_update_fails() - { - Mocker.GetMock() - .Setup(c => c.CopyDirectory(UPDATE_FOLDER, TARGET_FOLDER)) - .Throws(new IOException()); - - - Mocker.Resolve().Start(TARGET_FOLDER); - - - Mocker.GetMock() - .Verify(c => c.CopyDirectory(BACKUP_FOLDER, TARGET_FOLDER), Times.Once()); - ExceptionVerification.ExpectedFatals(1); - } - - [Test] - public void should_restart_service_if_service_was_running() - { - WithInstalledService(); - WithServiceRunning(true); - - - Mocker.Resolve().Start(TARGET_FOLDER); - - - VerifyServiceRestart(); - } - - [Test] - public void should_restart_process_if_service_was_not_running() - { - WithInstalledService(); - WithServiceRunning(false); - - - Mocker.Resolve().Start(TARGET_FOLDER); - - - VerifyProcessRestart(); - } - - [Test] - public void should_restart_service_if_service_was_running_and_update_fails() - { - WithInstalledService(); - WithServiceRunning(true); - - Mocker.GetMock() - .Setup(c => c.CopyDirectory(UPDATE_FOLDER, TARGET_FOLDER)) - .Throws(new IOException()); - - - Mocker.Resolve().Start(TARGET_FOLDER); - - - VerifyServiceRestart(); - ExceptionVerification.ExpectedFatals(1); - } - - [Test] - public void should_restart_process_if_service_was_not_running_and_update_fails() - { - WithInstalledService(); - WithServiceRunning(false); - - Mocker.GetMock() - .Setup(c => c.CopyDirectory(UPDATE_FOLDER, TARGET_FOLDER)) - .Throws(new IOException()); - - - Mocker.Resolve().Start(TARGET_FOLDER); - - - VerifyProcessRestart(); - ExceptionVerification.ExpectedFatals(1); - } - - private void VerifyServiceRestart() - { - Mocker.GetMock() - .Verify(c => c.Start(ServiceProvider.NZBDRONE_SERVICE_NAME), Times.Once()); - - Mocker.GetMock() - .Verify(c => c.Start(It.IsAny()), Times.Never()); - } - - private void VerifyProcessRestart() - { - Mocker.GetMock() - .Verify(c => c.Start(It.IsAny()), Times.Never()); - - Mocker.GetMock() - .Verify(c => c.Start(TARGET_FOLDER + "NzbDrone.exe"), Times.Once()); - } - - - } -} -*/ diff --git a/src/NzbDrone.Update/Lidarr.Update.csproj b/src/NzbDrone.Update/Lidarr.Update.csproj index 246ca8b4b..a71c04eef 100644 --- a/src/NzbDrone.Update/Lidarr.Update.csproj +++ b/src/NzbDrone.Update/Lidarr.Update.csproj @@ -1,7 +1,7 @@  WinExe - net462 + net462;netcoreapp3.0 diff --git a/src/NzbDrone.Update/UpdateEngine/InstallUpdateService.cs b/src/NzbDrone.Update/UpdateEngine/InstallUpdateService.cs index 9b7240ab2..6a2ffda00 100644 --- a/src/NzbDrone.Update/UpdateEngine/InstallUpdateService.cs +++ b/src/NzbDrone.Update/UpdateEngine/InstallUpdateService.cs @@ -114,7 +114,7 @@ namespace NzbDrone.Update.UpdateEngine _diskTransferService.MirrorFolder(_appFolderInfo.GetUpdatePackageFolder(), installationFolder); // Set executable flag on Lidarr app - if (OsInfo.IsOsx) + if (OsInfo.IsOsx || (OsInfo.IsLinux && PlatformInfo.IsNetCore)) { _diskProvider.SetPermissions(Path.Combine(installationFolder, "Lidarr"), "0755", null, null); } diff --git a/src/NzbDrone.Update/UpdateEngine/StartNzbDrone.cs b/src/NzbDrone.Update/UpdateEngine/StartNzbDrone.cs index cadd1ac15..1ae411bbe 100644 --- a/src/NzbDrone.Update/UpdateEngine/StartNzbDrone.cs +++ b/src/NzbDrone.Update/UpdateEngine/StartNzbDrone.cs @@ -3,6 +3,7 @@ using System.IO; using NLog; using NzbDrone.Common; using NzbDrone.Common.EnvironmentInfo; +using NzbDrone.Common.Extensions; using NzbDrone.Common.Processes; using IServiceProvider = NzbDrone.Common.IServiceProvider; @@ -62,12 +63,12 @@ namespace NzbDrone.Update.UpdateEngine private void StartWinform(string installationFolder) { - Start(installationFolder, "Lidarr.exe"); + Start(installationFolder, "Lidarr".ProcessNameToExe()); } private void StartConsole(string installationFolder) { - Start(installationFolder, "Lidarr.Console.exe"); + Start(installationFolder, "Lidarr.Console".ProcessNameToExe()); } private void Start(string installationFolder, string fileName) @@ -83,4 +84,4 @@ namespace NzbDrone.Update.UpdateEngine _processProvider.SpawnNewProcess(path, _startupContext.PreservedArguments); } } -} \ No newline at end of file +} diff --git a/src/NzbDrone.Windows.Test/DiskProviderTests/DiskProviderFixture.cs b/src/NzbDrone.Windows.Test/DiskProviderTests/DiskProviderFixture.cs index 847e03b92..ac1b5bb6f 100644 --- a/src/NzbDrone.Windows.Test/DiskProviderTests/DiskProviderFixture.cs +++ b/src/NzbDrone.Windows.Test/DiskProviderTests/DiskProviderFixture.cs @@ -25,15 +25,17 @@ namespace NzbDrone.Windows.Test.DiskProviderTests if (Directory.Exists(path)) { - var ds = Directory.GetAccessControl(path); + var directory = new DirectoryInfo(path); + var ds = directory.GetAccessControl(); ds.SetAccessRule(new FileSystemAccessRule(owner, FileSystemRights.Write, accessControlType)); - Directory.SetAccessControl(path, ds); + directory.SetAccessControl(ds); } else { - var fs = File.GetAccessControl(path); + var file = new FileInfo(path); + var fs = file.GetAccessControl(); fs.SetAccessRule(new FileSystemAccessRule(owner, FileSystemRights.Write, accessControlType)); - File.SetAccessControl(path, fs); + file.SetAccessControl(fs); } } } diff --git a/src/NzbDrone.Windows.Test/EnvironmentInfo/DotNetPlatformInfoFixture.cs b/src/NzbDrone.Windows.Test/EnvironmentInfo/DotNetPlatformInfoFixture.cs index 2d12a3f8f..f88119ad3 100644 --- a/src/NzbDrone.Windows.Test/EnvironmentInfo/DotNetPlatformInfoFixture.cs +++ b/src/NzbDrone.Windows.Test/EnvironmentInfo/DotNetPlatformInfoFixture.cs @@ -6,7 +6,7 @@ using NzbDrone.Test.Common; namespace NzbDrone.Windows.Test.EnvironmentInfo { [TestFixture] - [Platform("Win")] + [Platform("Net")] public class DotNetPlatformInfoFixture : TestBase { [Test] diff --git a/src/NzbDrone.Windows.Test/Lidarr.Windows.Test.csproj b/src/NzbDrone.Windows.Test/Lidarr.Windows.Test.csproj index 36e633f66..302cef1a9 100644 --- a/src/NzbDrone.Windows.Test/Lidarr.Windows.Test.csproj +++ b/src/NzbDrone.Windows.Test/Lidarr.Windows.Test.csproj @@ -1,7 +1,16 @@  - net462 + net462;netcoreapp3.0 + + + + + + + + + diff --git a/src/NzbDrone.Windows/Disk/DiskProvider.cs b/src/NzbDrone.Windows/Disk/DiskProvider.cs index 18b286526..1ded18049 100644 --- a/src/NzbDrone.Windows/Disk/DiskProvider.cs +++ b/src/NzbDrone.Windows/Disk/DiskProvider.cs @@ -2,6 +2,7 @@ using System.IO; using System.IO.Abstractions; using System.Runtime.InteropServices; +using System.Security.AccessControl; using NLog; using NzbDrone.Common.Disk; using NzbDrone.Common.EnsureThat; @@ -50,9 +51,10 @@ namespace NzbDrone.Windows.Disk { Ensure.That(filename, () => filename).IsValidPath(); - var fs = File.GetAccessControl(filename); + var file = _fileSystem.FileInfo.FromFileName(filename); + var fs = file.GetAccessControl(); fs.SetAccessRuleProtection(false, false); - File.SetAccessControl(filename, fs); + file.SetAccessControl(fs); } public override void SetPermissions(string path, string mask, string user, string group) diff --git a/src/NzbDrone.Windows/Lidarr.Windows.csproj b/src/NzbDrone.Windows/Lidarr.Windows.csproj index 108ebd993..aff5f065d 100644 --- a/src/NzbDrone.Windows/Lidarr.Windows.csproj +++ b/src/NzbDrone.Windows/Lidarr.Windows.csproj @@ -1,9 +1,10 @@  - net462 + net462;netcoreapp3.0 + diff --git a/src/NzbDrone/Lidarr.csproj b/src/NzbDrone/Lidarr.csproj index 3edb903d1..da38debce 100644 --- a/src/NzbDrone/Lidarr.csproj +++ b/src/NzbDrone/Lidarr.csproj @@ -1,8 +1,9 @@ - + WinExe - net462 + net462;netcoreapp3.0 win-x64 + true ..\NzbDrone.Host\NzbDrone.ico app.manifest true @@ -13,7 +14,7 @@ - + diff --git a/src/PublishAllRids.targets b/src/PublishAllRids.targets index c6c99be98..e43dd7bfe 100644 --- a/src/PublishAllRids.targets +++ b/src/PublishAllRids.targets @@ -10,21 +10,22 @@ - - - - %(Runtimes.Identity) - - - + %(Frameworks.Identity) - + + + + %(Identity) + %(Framework) + + + - - RuntimeIdentifier=%(Combined2.Runtime);TargetFramework=%(Combined2.Framework) + + RuntimeIdentifier=%(Renamed.Runtime);TargetFramework=%(Renamed.Framework) diff --git a/src/ServiceHelpers/ServiceInstall/ServiceInstall.csproj b/src/ServiceHelpers/ServiceInstall/ServiceInstall.csproj index 8c54330b4..8a735f3bf 100644 --- a/src/ServiceHelpers/ServiceInstall/ServiceInstall.csproj +++ b/src/ServiceHelpers/ServiceInstall/ServiceInstall.csproj @@ -1,6 +1,9 @@  - Exe - net462 + WinExe + net462;netcoreapp3.0 + + + diff --git a/src/ServiceHelpers/ServiceUninstall/ServiceUninstall.csproj b/src/ServiceHelpers/ServiceUninstall/ServiceUninstall.csproj index 8c54330b4..69ed0d676 100644 --- a/src/ServiceHelpers/ServiceUninstall/ServiceUninstall.csproj +++ b/src/ServiceHelpers/ServiceUninstall/ServiceUninstall.csproj @@ -1,6 +1,9 @@  - Exe - net462 + WinExe + net462;netcoreapp3.0 + + + diff --git a/src/coverlet.runsettings b/src/coverlet.runsettings new file mode 100644 index 000000000..72987228b --- /dev/null +++ b/src/coverlet.runsettings @@ -0,0 +1,21 @@ + + + + + + + opencover + [Lidarr.*.Test]*,[Lidarr.Test.*]*,[Lidarr.Api.V1]*,[Marr.Data]*,[MonoTorrent]* + + + + + + + + + + diff --git a/test.sh b/test.sh index f22ea3b6d..b048addf5 100755 --- a/test.sh +++ b/test.sh @@ -2,7 +2,7 @@ PLATFORM=$1 TYPE=$2 COVERAGE=$3 -WHERE="cat != ManualTest" +WHERE="Category!=ManualTest" TEST_PATTERN="*Test.dll" ASSEMBLIES="" TEST_LOG_FILE="TestLog.txt" @@ -16,16 +16,12 @@ if [ -d "$TEST_DIR/_tests" ]; then TEST_DIR="$TEST_DIR/_tests" fi -COVERAGE_RESULT_DIRECTORY="$TEST_DIR/CoverageResults/" - rm -f "$TEST_LOG_FILE" # Uncomment to log test output to a file instead of the console export LIDARR_TESTS_LOG_OUTPUT="File" -NUNIT="$TEST_DIR/NUnit.ConsoleRunner.3.10.0/tools/nunit3-console.exe" -NUNIT_COMMAND="$NUNIT" -NUNIT_PARAMS="--workers=1" +VSTEST_PARAMS="--Platform:x64 --logger:nunit;LogFilePath=TestResult.xml" if [ "$PLATFORM" = "Mac" ]; then @@ -39,22 +35,21 @@ fi if [ "$PLATFORM" = "Windows" ]; then mkdir -p "$ProgramData/Lidarr" - WHERE="$WHERE && cat != LINUX" + WHERE="$WHERE&Category!=LINUX" elif [ "$PLATFORM" = "Linux" ] || [ "$PLATFORM" = "Mac" ] ; then mkdir -p ~/.config/Lidarr - WHERE="$WHERE && cat != WINDOWS" - NUNIT_COMMAND="mono --debug --runtime=v4.0 $NUNIT" + WHERE="$WHERE&Category!=WINDOWS" else echo "Platform must be provided as first arguement: Windows, Linux or Mac" exit 1 fi if [ "$TYPE" = "Unit" ]; then - WHERE="$WHERE && cat != IntegrationTest && cat != AutomationTest" + WHERE="$WHERE&Category!=IntegrationTest&Category!=AutomationTest" elif [ "$TYPE" = "Integration" ] || [ "$TYPE" = "int" ] ; then - WHERE="$WHERE && cat == IntegrationTest" + WHERE="$WHERE&Category=IntegrationTest" elif [ "$TYPE" = "Automation" ] ; then - WHERE="$WHERE && cat == AutomationTest" + WHERE="$WHERE&Category=AutomationTest" else echo "Type must be provided as second argument: Unit, Integration or Automation" exit 2 @@ -64,19 +59,13 @@ for i in `find $TEST_DIR -name "$TEST_PATTERN"`; do ASSEMBLIES="$ASSEMBLIES $i" done +DOTNET_PARAMS="$ASSEMBLIES --TestCaseFilter:$WHERE $VSTEST_PARAMS" + if [ "$COVERAGE" = "Coverage" ]; then - if [ "$PLATFORM" = "Windows" ] || [ "$PLATFORM" = "Linux" ]; then - dotnet tool install coverlet.console --tool-path="$TEST_DIR/coverlet/" - mkdir $COVERAGE_RESULT_DIRECTORY - OPEN_COVER="$TEST_DIR/coverlet/coverlet" - $OPEN_COVER "$TEST_DIR/" --verbosity "detailed" --format "cobertura" --format "opencover" --output "$COVERAGE_RESULT_DIRECTORY" --exclude "[Lidarr.*.Test]*" --exclude "[Lidarr.Test.*]*" --exclude "[Lidarr.Api.V1]*" --exclude "[Marr.Data]*" --exclude "[MonoTorrent]*" --exclude "[CurlSharp]*" --target "$NUNIT" --targetargs "$NUNIT_PARAMS --where=\"$WHERE\" $ASSEMBLIES"; - EXIT_CODE=$? - else - echo "Coverage only supported on Windows and Linux" - exit 3 - fi + dotnet vstest $DOTNET_PARAMS --settings:"src/coverlet.runsettings" --ResultsDirectory:./CoverageResults + EXIT_CODE=$? elif [ "$COVERAGE" = "Test" ] ; then - $NUNIT_COMMAND --where "$WHERE" $NUNIT_PARAMS $ASSEMBLIES; + dotnet vstest $DOTNET_PARAMS EXIT_CODE=$? else echo "Run Type must be provided as third argument: Coverage or Test" diff --git a/tools/nuget/nuget.exe b/tools/nuget/nuget.exe deleted file mode 100644 index e00ef51e108551e1d9f9d779f73d205371701540..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5688608 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 z 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