Ejemplo n.º 1
0
        public AudioBookFileInfo Resolve(string path, bool IsDirectory = false)
        {
            if (string.IsNullOrWhiteSpace(path))
            {
                throw new ArgumentNullException("path");
            }
            if (IsDirectory)
            {
                return(null);
            }

            var extension = Path.GetExtension(path) ?? string.Empty;

            // Check supported extensions
            if (!_options.AudioFileExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase))
            {
                return(null);
            }

            var container = extension.TrimStart('.');

            var parsingResult = new AudioBookFilePathParser(_options, _iRegexProvider)
                                .Parse(path, IsDirectory);

            return(new AudioBookFileInfo
            {
                Path = path,
                Container = container,
                PartNumber = parsingResult.PartNumber,
                ChapterNumber = parsingResult.ChapterNumber,
                IsDirectory = IsDirectory
            });
        }
Ejemplo n.º 2
0
        public AudioBookFileInfo Resolve(string path, bool isDirectory = false)
        {
            if (string.IsNullOrEmpty(path))
            {
                throw new ArgumentNullException(nameof(path));
            }

            // TODO
            if (isDirectory)
            {
                return(null);
            }

            var extension = Path.GetExtension(path);

            // Check supported extensions
            if (!_options.AudioFileExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase))
            {
                return(null);
            }

            var container = extension.TrimStart('.');

            var parsingResult = new AudioBookFilePathParser(_options).Parse(path);

            return(new AudioBookFileInfo
            {
                Path = path,
                Container = container,
                PartNumber = parsingResult.PartNumber,
                ChapterNumber = parsingResult.ChapterNumber,
                IsDirectory = isDirectory
            });
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Resolve specifics (path, container, partNumber, chapterNumber) about audiobook file.
        /// </summary>
        /// <param name="path">Path to audiobook file.</param>
        /// <returns>Returns <see cref="AudioBookResolver"/> object.</returns>
        public AudioBookFileInfo?Resolve(string path)
        {
            if (path.Length == 0 || Path.GetFileNameWithoutExtension(path).Length == 0)
            {
                // Return null to indicate this path will not be used, instead of stopping whole process with exception
                return(null);
            }

            var extension = Path.GetExtension(path);

            // Check supported extensions
            if (!_options.AudioFileExtensions.Contains(extension, StringComparison.OrdinalIgnoreCase))
            {
                return(null);
            }

            var container = extension.TrimStart('.');

            var parsingResult = new AudioBookFilePathParser(_options).Parse(path);

            return(new AudioBookFileInfo(
                       path,
                       container,
                       chapterNumber: parsingResult.ChapterNumber,
                       partNumber: parsingResult.PartNumber));
        }