From 350334ddde4adaeadfbc8c9b8408c39c59068a53 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Tue, 29 Sep 2020 07:38:27 -0500 Subject: [PATCH] =?UTF-8?q?feat(archival):=20=E2=9C=A8=20support=20getting?= =?UTF-8?q?=20file=20extension=20from=20non-absolute=20URIs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Extensions/UriExtension.cs | 20 +++++++++++++++++++ .../Lists/ListFileExtension.cs | 14 ++----------- 2 files changed, 22 insertions(+), 12 deletions(-) create mode 100644 services/Archival/FilterLists.Archival.Domain/Extensions/UriExtension.cs diff --git a/services/Archival/FilterLists.Archival.Domain/Extensions/UriExtension.cs b/services/Archival/FilterLists.Archival.Domain/Extensions/UriExtension.cs new file mode 100644 index 000000000..38b6063cb --- /dev/null +++ b/services/Archival/FilterLists.Archival.Domain/Extensions/UriExtension.cs @@ -0,0 +1,20 @@ +using System; +using System.IO; + +namespace FilterLists.Archival.Domain.Extensions +{ + public static class UriExtension + { + private static readonly Uri DummyBaseUri = new Uri("http://localhost"); + + public static string GetFileExtension(this Uri uri) + { + if (!uri.IsAbsoluteUri) + { + uri = new Uri(DummyBaseUri, uri); + } + + return Path.GetExtension(uri.LocalPath); + } + } +} diff --git a/services/Archival/FilterLists.Archival.Domain/Lists/ListFileExtension.cs b/services/Archival/FilterLists.Archival.Domain/Lists/ListFileExtension.cs index b583de7a1..b6152349e 100644 --- a/services/Archival/FilterLists.Archival.Domain/Lists/ListFileExtension.cs +++ b/services/Archival/FilterLists.Archival.Domain/Lists/ListFileExtension.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; -using System.IO; -using System.Linq; +using FilterLists.Archival.Domain.Extensions; using FilterLists.Archival.Domain.SeedWork; namespace FilterLists.Archival.Domain.Lists @@ -56,16 +55,7 @@ private ListFileExtension(string value) public static ListFileExtension FromUri(Uri uri) { - _ = uri ?? throw new ArgumentNullException(nameof(uri)); - - if (!uri.IsAbsoluteUri) - { - // TODO: implement - throw new NotImplementedException(); - } - - var extension = Path.GetExtension(Uri.UnescapeDataString(uri.Segments.Last())); - return new ListFileExtension(extension); + return new ListFileExtension(uri.GetFileExtension()); } protected override IEnumerable GetEqualityComponents()