From 68da9779da9be783a9604b730d8eeb74d9869f6c Mon Sep 17 00:00:00 2001 From: Robert McRackan Date: Fri, 22 Oct 2021 11:07:18 -0400 Subject: [PATCH] Expose internal to Test projects --- AppScaffolding/AppScaffolding.csproj | 2 +- AudibleUtilities/_InternalsVisible.cs | 1 + FileLiberator/AudioFileStorageExt.cs | 51 ++++++++++++----------- FileLiberator/DownloadDecryptBook.cs | 2 +- FileLiberator/_InternalsVisible.cs | 1 + FileManager/_InternalsVisible.cs | 1 + LibationSearchEngine/_InternalsVisible.cs | 1 + 7 files changed, 33 insertions(+), 26 deletions(-) create mode 100644 AudibleUtilities/_InternalsVisible.cs create mode 100644 FileLiberator/_InternalsVisible.cs create mode 100644 FileManager/_InternalsVisible.cs create mode 100644 LibationSearchEngine/_InternalsVisible.cs diff --git a/AppScaffolding/AppScaffolding.csproj b/AppScaffolding/AppScaffolding.csproj index e8098a05..0ee23e36 100644 --- a/AppScaffolding/AppScaffolding.csproj +++ b/AppScaffolding/AppScaffolding.csproj @@ -3,7 +3,7 @@ net5.0 - 6.2.8.1 + 6.2.8.2 diff --git a/AudibleUtilities/_InternalsVisible.cs b/AudibleUtilities/_InternalsVisible.cs new file mode 100644 index 00000000..68336e60 --- /dev/null +++ b/AudibleUtilities/_InternalsVisible.cs @@ -0,0 +1 @@ +[assembly: System.Runtime.CompilerServices.InternalsVisibleTo(nameof(AudibleUtilities) + ".Tests")] \ No newline at end of file diff --git a/FileLiberator/AudioFileStorageExt.cs b/FileLiberator/AudioFileStorageExt.cs index 65dd3fcd..54f91eab 100644 --- a/FileLiberator/AudioFileStorageExt.cs +++ b/FileLiberator/AudioFileStorageExt.cs @@ -9,42 +9,45 @@ using LibationFileManager; namespace FileLiberator { - public class MultipartRenamer - { - LibraryBook libraryBook; - - public MultipartRenamer(LibraryBook libraryBook) => this.libraryBook = libraryBook; - - public string MultipartFilename(string outputFileName, int partsPosition, int partsTotal, AAXClean.NewSplitCallback newSplitCallback) - { - var template = Path.ChangeExtension(outputFileName, null) + " - - " + Path.GetExtension(outputFileName); - - var fileTemplate = new FileTemplate(template) { IllegalCharacterReplacements = " " }; - fileTemplate.AddParameterReplacement("chapter", FileUtility.GetSequenceFormatted(partsPosition, partsTotal)); - fileTemplate.AddParameterReplacement("title", newSplitCallback?.Chapter?.Title ?? ""); - - return fileTemplate.GetFilePath(); - } - } - public static class AudioFileStorageExt { - public static MultipartRenamer CreateMultipartRenamer(this AudioFileStorage _, LibraryBook libraryBook) => CreateMultipartRenamer(libraryBook); - public static MultipartRenamer CreateMultipartRenamer(LibraryBook libraryBook) => new(libraryBook); + private class MultipartRenamer + { + public LibraryBook LibraryBook { get; init; } + + public string MultipartFilename(string outputFileName, int partsPosition, int partsTotal, AAXClean.NewSplitCallback newSplitCallback) + { + var extension = Path.GetExtension(outputFileName); + var baseFileName = AudioFileStorageExt.GetValidFilename(AudibleFileStorage.DecryptInProgressDirectory, LibraryBook.Book.Title, extension, LibraryBook); + + var template = Path.ChangeExtension(baseFileName, null) + " - <chapter> - <title>" + extension; + + var fileTemplate = new FileTemplate(template) { IllegalCharacterReplacements = " " }; + fileTemplate.AddParameterReplacement("chapter", FileUtility.GetSequenceFormatted(partsPosition, partsTotal)); + fileTemplate.AddParameterReplacement("title", newSplitCallback?.Chapter?.Title ?? ""); + + return fileTemplate.GetFilePath(); + } + } + + public static Func<string, int, int, AAXClean.NewSplitCallback, string> CreateMultipartRenamerFunc(this AudioFileStorage _, LibraryBook libraryBook) + => CreateMultipartRenamerFunc(libraryBook); + private static Func<string, int, int, AAXClean.NewSplitCallback, string> CreateMultipartRenamerFunc(LibraryBook libraryBook) + => new MultipartRenamer { LibraryBook = libraryBook }.MultipartFilename; public static string GetInProgressFilename(this AudioFileStorage _, LibraryBook libraryBook, string extension) => GetInProgressFilename(libraryBook, extension); - public static string GetInProgressFilename(LibraryBook libraryBook, string extension) + private static string GetInProgressFilename(LibraryBook libraryBook, string extension) => GetValidFilename(AudibleFileStorage.DecryptInProgressDirectory, libraryBook.Book.Title, extension, libraryBook); public static string GetBooksDirectoryFilename(this AudioFileStorage _, LibraryBook libraryBook, string extension) => GetBooksDirectoryFilename(libraryBook, extension); - public static string GetBooksDirectoryFilename(LibraryBook libraryBook, string extension) + private static string GetBooksDirectoryFilename(LibraryBook libraryBook, string extension) => GetValidFilename(AudibleFileStorage.BooksDirectory, libraryBook.Book.Title, extension, libraryBook); public static string CreateDestinationDirectory(this AudioFileStorage _, LibraryBook libraryBook) => CreateDestinationDirectory(libraryBook); - public static string CreateDestinationDirectory(LibraryBook libraryBook) + private static string CreateDestinationDirectory(LibraryBook libraryBook) { var title = libraryBook.Book.Title; @@ -59,7 +62,7 @@ namespace FileLiberator return destinationDir; } - public static string GetValidFilename(string dirFullPath, string filename, string extension, LibraryBook libraryBook) + internal static string GetValidFilename(string dirFullPath, string filename, string extension, LibraryBook libraryBook) { ArgumentValidator.EnsureNotNullOrWhiteSpace(dirFullPath, nameof(dirFullPath)); ArgumentValidator.EnsureNotNullOrWhiteSpace(filename, nameof(filename)); diff --git a/FileLiberator/DownloadDecryptBook.cs b/FileLiberator/DownloadDecryptBook.cs index 41cbcbbc..ece04995 100644 --- a/FileLiberator/DownloadDecryptBook.cs +++ b/FileLiberator/DownloadDecryptBook.cs @@ -123,7 +123,7 @@ namespace FileLiberator = contentLic.DrmType != AudibleApi.Common.DrmType.Adrm ? new UnencryptedAudiobookDownloader(outFileName, cacheDir, audiobookDlLic) : Configuration.Instance.SplitFilesByChapter ? new AaxcDownloadMultiConverter( outFileName, cacheDir, audiobookDlLic, outputFormat, - AudibleFileStorage.Audio.CreateMultipartRenamer(libraryBook).MultipartFilename + AudibleFileStorage.Audio.CreateMultipartRenamerFunc(libraryBook) ) : new AaxcDownloadSingleConverter(outFileName, cacheDir, audiobookDlLic, outputFormat); abDownloader.DecryptProgressUpdate += (_, progress) => OnStreamingProgressChanged(progress); diff --git a/FileLiberator/_InternalsVisible.cs b/FileLiberator/_InternalsVisible.cs new file mode 100644 index 00000000..b5e38212 --- /dev/null +++ b/FileLiberator/_InternalsVisible.cs @@ -0,0 +1 @@ +[assembly: System.Runtime.CompilerServices.InternalsVisibleTo(nameof(FileLiberator) + ".Tests")] \ No newline at end of file diff --git a/FileManager/_InternalsVisible.cs b/FileManager/_InternalsVisible.cs new file mode 100644 index 00000000..c351ee63 --- /dev/null +++ b/FileManager/_InternalsVisible.cs @@ -0,0 +1 @@ +[assembly: System.Runtime.CompilerServices.InternalsVisibleTo(nameof(FileManager) + ".Tests")] \ No newline at end of file diff --git a/LibationSearchEngine/_InternalsVisible.cs b/LibationSearchEngine/_InternalsVisible.cs new file mode 100644 index 00000000..2db5bed5 --- /dev/null +++ b/LibationSearchEngine/_InternalsVisible.cs @@ -0,0 +1 @@ +[assembly: System.Runtime.CompilerServices.InternalsVisibleTo(nameof(LibationSearchEngine) + ".Tests")] \ No newline at end of file