< Summary - Jellyfin

Information
Class: Emby.Naming.AudioBook.AudioBookResolver
Assembly: Emby.Naming
File(s): /srv/git/jellyfin/Emby.Naming/AudioBook/AudioBookResolver.cs
Line coverage
100%
Covered lines: 14
Uncovered lines: 0
Coverable lines: 14
Total lines: 56
Line coverage: 100%
Branch coverage
100%
Covered branches: 6
Total branches: 6
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Resolve(...)100%66100%

File(s)

/srv/git/jellyfin/Emby.Naming/AudioBook/AudioBookResolver.cs

#LineLine coverage
 1using System;
 2using System.IO;
 3using Emby.Naming.Common;
 4using Jellyfin.Extensions;
 5
 6namespace Emby.Naming.AudioBook
 7{
 8    /// <summary>
 9    /// Resolve specifics (path, container, partNumber, chapterNumber) about audiobook file.
 10    /// </summary>
 11    public class AudioBookResolver
 12    {
 13        private readonly NamingOptions _options;
 14
 15        /// <summary>
 16        /// Initializes a new instance of the <see cref="AudioBookResolver"/> class.
 17        /// </summary>
 18        /// <param name="options"><see cref="NamingOptions"/> containing AudioFileExtensions and also used to pass to Au
 19        public AudioBookResolver(NamingOptions options)
 20        {
 3021            _options = options;
 3022        }
 23
 24        /// <summary>
 25        /// Resolve specifics (path, container, partNumber, chapterNumber) about audiobook file.
 26        /// </summary>
 27        /// <param name="path">Path to audiobook file.</param>
 28        /// <returns>Returns <see cref="AudioBookResolver"/> object.</returns>
 29        public AudioBookFileInfo? Resolve(string path)
 30        {
 12431            if (path.Length == 0 || Path.GetFileNameWithoutExtension(path).Length == 0)
 32            {
 33                // Return null to indicate this path will not be used, instead of stopping whole process with exception
 234                return null;
 35            }
 36
 12237            var extension = Path.GetExtension(path);
 38
 39            // Check supported extensions
 12240            if (!_options.AudioFileExtensions.Contains(extension, StringComparison.OrdinalIgnoreCase))
 41            {
 542                return null;
 43            }
 44
 11745            var container = extension.TrimStart('.');
 46
 11747            var parsingResult = new AudioBookFilePathParser(_options).Parse(path);
 48
 11749            return new AudioBookFileInfo(
 11750                path,
 11751                container,
 11752                chapterNumber: parsingResult.ChapterNumber,
 11753                partNumber: parsingResult.PartNumber);
 54        }
 55    }
 56}