From c0de170f6813f9274b181ceef8f076b1b6e657fa Mon Sep 17 00:00:00 2001 From: Jamie Date: Tue, 20 Aug 2019 09:12:12 +0100 Subject: [PATCH 01/12] Update aspnetcore.yml --- .github/workflows/aspnetcore.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .github/workflows/aspnetcore.yml diff --git a/.github/workflows/aspnetcore.yml b/.github/workflows/aspnetcore.yml new file mode 100644 index 000000000..54eefedd6 --- /dev/null +++ b/.github/workflows/aspnetcore.yml @@ -0,0 +1,17 @@ +name: ASP.NET Core CI + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - name: Setup .NET Core + uses: actions/setup-dotnet@v1 + with: + dotnet-version: 2.2.108 + - name: Build with dotnet + run: dotnet build --configuration Release From 01a44c9d258f33c537fa0ef3572f060ff415cab6 Mon Sep 17 00:00:00 2001 From: Jamie Date: Tue, 20 Aug 2019 09:16:12 +0100 Subject: [PATCH 02/12] Update aspnetcore.yml --- .github/workflows/aspnetcore.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/aspnetcore.yml b/.github/workflows/aspnetcore.yml index 54eefedd6..c4dc13a62 100644 --- a/.github/workflows/aspnetcore.yml +++ b/.github/workflows/aspnetcore.yml @@ -1,6 +1,6 @@ name: ASP.NET Core CI -on: [push] +on: [push, pull_request] jobs: build: @@ -14,4 +14,4 @@ jobs: with: dotnet-version: 2.2.108 - name: Build with dotnet - run: dotnet build --configuration Release + run: dotnet build src/Ombi.sln --configuration Release From 50978733f4bb2cd4a9ec47889fdaaf415a8bc192 Mon Sep 17 00:00:00 2001 From: Jamie Date: Tue, 20 Aug 2019 09:27:39 +0100 Subject: [PATCH 03/12] Update aspnetcore.yml --- .github/workflows/aspnetcore.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/aspnetcore.yml b/.github/workflows/aspnetcore.yml index c4dc13a62..58aed1187 100644 --- a/.github/workflows/aspnetcore.yml +++ b/.github/workflows/aspnetcore.yml @@ -15,3 +15,5 @@ jobs: dotnet-version: 2.2.108 - name: Build with dotnet run: dotnet build src/Ombi.sln --configuration Release + - name: Run Tests + run: dotnet test src/Ombi.sln --no-build From eab38ebada26b591bfec10a2a229e23eba9ce3d5 Mon Sep 17 00:00:00 2001 From: Jamie Date: Tue, 20 Aug 2019 09:37:20 +0100 Subject: [PATCH 04/12] Update and rename .github/workflows to .github/.github/workflows/test.workflow --- .github/.github/workflows/test.workflow | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .github/.github/workflows/test.workflow diff --git a/.github/.github/workflows/test.workflow b/.github/.github/workflows/test.workflow new file mode 100644 index 000000000..7c88813d1 --- /dev/null +++ b/.github/.github/workflows/test.workflow @@ -0,0 +1,9 @@ +workflow "New workflow" { + on = "push" + resolves = [".NET Core CLI"] +} + +action ".NET Core CLI" { + uses = "baruchiro/github-actions@0.0.1" + args = "build src/Ombi.sln" +} From 36c7f763709b19a2773e5c44509465288cc17c37 Mon Sep 17 00:00:00 2001 From: Jamie Date: Tue, 20 Aug 2019 09:38:27 +0100 Subject: [PATCH 05/12] Delete test.workflow --- .github/.github/workflows/test.workflow | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 .github/.github/workflows/test.workflow diff --git a/.github/.github/workflows/test.workflow b/.github/.github/workflows/test.workflow deleted file mode 100644 index 7c88813d1..000000000 --- a/.github/.github/workflows/test.workflow +++ /dev/null @@ -1,9 +0,0 @@ -workflow "New workflow" { - on = "push" - resolves = [".NET Core CLI"] -} - -action ".NET Core CLI" { - uses = "baruchiro/github-actions@0.0.1" - args = "build src/Ombi.sln" -} From 5e71b4c87618406cb8c64e8b2d1dcc32af6e644f Mon Sep 17 00:00:00 2001 From: Jamie Date: Tue, 20 Aug 2019 09:38:40 +0100 Subject: [PATCH 06/12] Create test.workflow --- .github/workflows/test.workflow | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .github/workflows/test.workflow diff --git a/.github/workflows/test.workflow b/.github/workflows/test.workflow new file mode 100644 index 000000000..7c88813d1 --- /dev/null +++ b/.github/workflows/test.workflow @@ -0,0 +1,9 @@ +workflow "New workflow" { + on = "push" + resolves = [".NET Core CLI"] +} + +action ".NET Core CLI" { + uses = "baruchiro/github-actions@0.0.1" + args = "build src/Ombi.sln" +} From faf989c1b47d2f807e83ff2c19208add5e9f4e34 Mon Sep 17 00:00:00 2001 From: Jamie Date: Tue, 20 Aug 2019 09:54:09 +0100 Subject: [PATCH 07/12] Update aspnetcore.yml --- .github/workflows/aspnetcore.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/aspnetcore.yml b/.github/workflows/aspnetcore.yml index 58aed1187..2ee6d6b78 100644 --- a/.github/workflows/aspnetcore.yml +++ b/.github/workflows/aspnetcore.yml @@ -16,4 +16,4 @@ jobs: - name: Build with dotnet run: dotnet build src/Ombi.sln --configuration Release - name: Run Tests - run: dotnet test src/Ombi.sln --no-build + run: dotnet test src/Ombi.sln From bc4e2b78f3397591909e2ab91b2e94b6f621d38b Mon Sep 17 00:00:00 2001 From: Jamie Date: Tue, 20 Aug 2019 10:17:25 +0100 Subject: [PATCH 08/12] Update aspnetcore.yml --- .github/workflows/aspnetcore.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/aspnetcore.yml b/.github/workflows/aspnetcore.yml index 2ee6d6b78..c4dc13a62 100644 --- a/.github/workflows/aspnetcore.yml +++ b/.github/workflows/aspnetcore.yml @@ -15,5 +15,3 @@ jobs: dotnet-version: 2.2.108 - name: Build with dotnet run: dotnet build src/Ombi.sln --configuration Release - - name: Run Tests - run: dotnet test src/Ombi.sln From 8727b1ecd430dec7c892c14c2bd2c114eb4ef0e1 Mon Sep 17 00:00:00 2001 From: Jamie Date: Tue, 27 Aug 2019 11:59:12 +0100 Subject: [PATCH 09/12] Update aspnetcore.yml --- .github/workflows/aspnetcore.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/aspnetcore.yml b/.github/workflows/aspnetcore.yml index c4dc13a62..6924c4a1b 100644 --- a/.github/workflows/aspnetcore.yml +++ b/.github/workflows/aspnetcore.yml @@ -13,5 +13,12 @@ jobs: uses: actions/setup-dotnet@v1 with: dotnet-version: 2.2.108 - - name: Build with dotnet + + - name: Build Backend run: dotnet build src/Ombi.sln --configuration Release + + - name: Install Yarn + uses: nuxt/actions-yarn@master + + - name: Build Frontend + run: yarn --cdw src/Ombi/ build From 819f4c1fe2f6b5e3a732928586de9129c6d13fc7 Mon Sep 17 00:00:00 2001 From: Jamie Date: Tue, 27 Aug 2019 12:00:15 +0100 Subject: [PATCH 10/12] Update aspnetcore.yml --- .github/workflows/aspnetcore.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/aspnetcore.yml b/.github/workflows/aspnetcore.yml index 6924c4a1b..0d762e2cd 100644 --- a/.github/workflows/aspnetcore.yml +++ b/.github/workflows/aspnetcore.yml @@ -17,8 +17,8 @@ jobs: - name: Build Backend run: dotnet build src/Ombi.sln --configuration Release - - name: Install Yarn - uses: nuxt/actions-yarn@master + - name: Install Yarn + uses: nuxt/actions-yarn@master - - name: Build Frontend - run: yarn --cdw src/Ombi/ build + - name: Build Frontend + run: yarn --cdw src/Ombi/ build From 9940156fea2e4220681df126f3272ed069b86940 Mon Sep 17 00:00:00 2001 From: Jamie Date: Wed, 28 Aug 2019 09:55:28 +0100 Subject: [PATCH 11/12] Update aspnetcore.yml --- .github/workflows/aspnetcore.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/aspnetcore.yml b/.github/workflows/aspnetcore.yml index 0d762e2cd..e562216cc 100644 --- a/.github/workflows/aspnetcore.yml +++ b/.github/workflows/aspnetcore.yml @@ -15,10 +15,4 @@ jobs: dotnet-version: 2.2.108 - name: Build Backend - run: dotnet build src/Ombi.sln --configuration Release - - - name: Install Yarn - uses: nuxt/actions-yarn@master - - - name: Build Frontend - run: yarn --cdw src/Ombi/ build + run: ./build.sh --settings_skipverification=true From ab8e5cca7ee154c4f52681fe9f639cfc69d4f10f Mon Sep 17 00:00:00 2001 From: msdeibel Date: Sat, 12 Oct 2019 10:00:26 +0200 Subject: [PATCH 12/12] Fixes issue #3195 The new string extension method ToHttpsUrl ensures that URLs starting with "https" are no longer turned into "httpss" The commit also replaces all occurances of the error prone .Replace("http", "https") in the whole solution. --- src/Ombi.Core/Engine/MusicSearchEngine.cs | 9 ++-- src/Ombi.Helpers.Tests/StringHelperTests.cs | 44 ++++++++++++++++++++ src/Ombi.Helpers/StringHelper.cs | 5 +++ src/Ombi.Mapping/Profiles/TvProfile.cs | 4 +- src/Ombi.Schedule/Jobs/Ombi/NewsletterJob.cs | 4 +- 5 files changed, 58 insertions(+), 8 deletions(-) create mode 100644 src/Ombi.Helpers.Tests/StringHelperTests.cs diff --git a/src/Ombi.Core/Engine/MusicSearchEngine.cs b/src/Ombi.Core/Engine/MusicSearchEngine.cs index da41d5bf1..a9af03ecf 100644 --- a/src/Ombi.Core/Engine/MusicSearchEngine.cs +++ b/src/Ombi.Core/Engine/MusicSearchEngine.cs @@ -17,6 +17,7 @@ using Ombi.Api.Lidarr.Models; using Ombi.Core.Authentication; using Ombi.Core.Settings; using Ombi.Helpers; +using Ombi.Core.Helpers; using Ombi.Settings.Settings.Models; using Ombi.Settings.Settings.Models.External; using Ombi.Store.Entities; @@ -166,7 +167,7 @@ namespace Ombi.Core.Engine Rating = a.ratings?.value ?? 0m, ReleaseDate = a.releaseDate, Title = a.title, - Disk = a.images?.FirstOrDefault(x => x.coverType.Equals("disc"))?.url?.Replace("http", "https"), + Disk = a.images?.FirstOrDefault(x => x.coverType.Equals("disc"))?.url?.ToHttpsUrl(), Genres = a.genres, AlbumType = a.albumType, ArtistName = a.artist.artistName, @@ -187,7 +188,7 @@ namespace Ombi.Core.Engine //vm.ArtistName = a.artist?.artistName; } - vm.Cover = a.images?.FirstOrDefault(x => x.coverType.Equals("cover"))?.url?.Replace("http", "https"); + vm.Cover = a.images?.FirstOrDefault(x => x.coverType.Equals("cover"))?.url?.ToHttpsUrl(); await Rules.StartSpecificRules(vm, SpecificRules.LidarrAlbum); @@ -205,7 +206,7 @@ namespace Ombi.Core.Engine Rating = a.ratings?.value ?? 0m, ReleaseDate = a.releaseDate, Title = a.title, - Disk = a.images?.FirstOrDefault(x => x.coverType.Equals("disc"))?.url?.Replace("http", "https"), + Disk = a.images?.FirstOrDefault(x => x.coverType.Equals("disc"))?.url?.ToHttpsUrl(), Genres = a.genres }; if (a.artistId > 0) @@ -223,7 +224,7 @@ namespace Ombi.Core.Engine vm.ArtistName = a.artist?.artistName; } - vm.Cover = a.images?.FirstOrDefault(x => x.coverType.Equals("cover"))?.url?.Replace("http", "https"); + vm.Cover = a.images?.FirstOrDefault(x => x.coverType.Equals("cover"))?.url?.ToHttpsUrl(); if (vm.Cover.IsNullOrEmpty()) { vm.Cover = a.remoteCover; diff --git a/src/Ombi.Helpers.Tests/StringHelperTests.cs b/src/Ombi.Helpers.Tests/StringHelperTests.cs new file mode 100644 index 000000000..d03f926ff --- /dev/null +++ b/src/Ombi.Helpers.Tests/StringHelperTests.cs @@ -0,0 +1,44 @@ +using NUnit.Framework; + +namespace Ombi.Helpers.Tests +{ + [TestFixture] + public class StringHelperTests + { + [Test] + public void ToHttpsUrl_ShouldReturnsHttpsUrl_HttpUrl() + { + var sourceUrl = "http://www.test.url"; + var expectedUrl = "https://www.test.url"; + + Assert.AreEqual(expectedUrl, sourceUrl.ToHttpsUrl(), "Should return the source URL as https"); + } + + [Test] + public void ToHttpsUrl_ShouldReturnsUnchangedUrl_HttpsUrl() + { + var sourceUrl = "https://www.test.url"; + var expectedUrl = "https://www.test.url"; + + Assert.AreEqual(expectedUrl, sourceUrl.ToHttpsUrl(), "Should return the unchanged https URL"); + } + + [Test] + public void ToHttpsUrl_ShouldReturnsUnchangedUrl_NonHttpUrl() + { + var sourceUrl = "ftp://www.test.url"; + var expectedUrl = "ftp://www.test.url"; + + Assert.AreEqual(expectedUrl, sourceUrl.ToHttpsUrl(), "Should return the unchanged non-http URL"); + } + + [Test] + public void ToHttpsUrl_ShouldReturnsUnchangedUrl_InvalidUrl() + { + var sourceUrl = "http:/www.test.url"; + var expectedUrl = "http:/www.test.url"; + + Assert.AreEqual(expectedUrl, sourceUrl.ToHttpsUrl(), "Should return the unchanged invalid URL"); + } + } +} \ No newline at end of file diff --git a/src/Ombi.Helpers/StringHelper.cs b/src/Ombi.Helpers/StringHelper.cs index 68a29e848..bd9ecb5bb 100644 --- a/src/Ombi.Helpers/StringHelper.cs +++ b/src/Ombi.Helpers/StringHelper.cs @@ -128,5 +128,10 @@ namespace Ombi.Helpers { return string.Concat(str.Where(c => !chars.Contains(c))); } + + public static string ToHttpsUrl(this string currentUrl) + { + return currentUrl.Replace("http://", "https://"); + } } } \ No newline at end of file diff --git a/src/Ombi.Mapping/Profiles/TvProfile.cs b/src/Ombi.Mapping/Profiles/TvProfile.cs index 4808a905b..db5213b71 100644 --- a/src/Ombi.Mapping/Profiles/TvProfile.cs +++ b/src/Ombi.Mapping/Profiles/TvProfile.cs @@ -29,7 +29,7 @@ namespace Ombi.Mapping.Profiles .ForMember(dest => dest.Runtime, opts => opts.MapFrom(src => src.show.runtime.ToString())) .ForMember(dest => dest.SeriesId, opts => opts.MapFrom(src => src.show.id)) .ForMember(dest => dest.Title, opts => opts.MapFrom(src => src.show.name)) - .ForMember(dest => dest.Banner, opts => opts.MapFrom(src => !string.IsNullOrEmpty(src.show.image.medium) ? src.show.image.medium.Replace("http", "https") : string.Empty)) + .ForMember(dest => dest.Banner, opts => opts.MapFrom(src => !string.IsNullOrEmpty(src.show.image.medium) ? src.show.image.medium.ToHttpsUrl() : string.Empty)) .ForMember(dest => dest.Status, opts => opts.MapFrom(src => src.show.status)); CreateMap() @@ -46,7 +46,7 @@ namespace Ombi.Mapping.Profiles .ForMember(dest => dest.Title, opts => opts.MapFrom(src => src.name)) .ForMember(dest => dest.Banner, opts => opts.MapFrom(src => !string.IsNullOrEmpty(src.image.medium) - ? src.image.medium.Replace("http", "https") + ? src.image.medium.ToHttpsUrl() : string.Empty)) .ForMember(dest => dest.Status, opts => opts.MapFrom(src => src.status)); diff --git a/src/Ombi.Schedule/Jobs/Ombi/NewsletterJob.cs b/src/Ombi.Schedule/Jobs/Ombi/NewsletterJob.cs index f3756bb0f..710c39595 100644 --- a/src/Ombi.Schedule/Jobs/Ombi/NewsletterJob.cs +++ b/src/Ombi.Schedule/Jobs/Ombi/NewsletterJob.cs @@ -682,7 +682,7 @@ namespace Ombi.Schedule.Jobs.Ombi var banner = info.image?.original; if (!string.IsNullOrEmpty(banner)) { - banner = banner.Replace("http", "https"); // Always use the Https banners + banner = banner.ToHttpsUrl(); // Always use the Https banners } var tvInfo = await _movieApi.GetTVInfo(t.TheMovieDbId); @@ -804,7 +804,7 @@ namespace Ombi.Schedule.Jobs.Ombi var banner = info.image?.original; if (!string.IsNullOrEmpty(banner)) { - banner = banner.Replace("http", "https"); // Always use the Https banners + banner = banner.ToHttpsUrl(); // Always use the Https banners } var tvInfo = await _movieApi.GetTVInfo(t.TheMovieDbId);