aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/Books/ComicProvider.cs
blob: d59c58c330e79bc12c0f68b377f05f6cf8254cdb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Providers;

namespace MediaBrowser.Providers.Books;

/// <summary>
/// Comic provider.
/// </summary>
public class ComicProvider : ILocalMetadataProvider<Book>, IHasItemChangeMonitor
{
    private readonly IEnumerable<IComicProvider> _comicProviders;

    /// <summary>
    /// Initializes a new instance of the <see cref="ComicProvider"/> class.
    /// </summary>
    /// <param name="comicProviders">The list of comic providers.</param>
    public ComicProvider(IEnumerable<IComicProvider> comicProviders)
    {
        _comicProviders = comicProviders;
    }

    /// <inheritdoc />
    public string Name => "Comic Provider";

    /// <inheritdoc />
    public async Task<MetadataResult<Book>> GetMetadata(ItemInfo info, IDirectoryService directoryService, CancellationToken cancellationToken)
    {
        foreach (IComicProvider comicProvider in _comicProviders)
        {
            var metadata = await comicProvider.ReadMetadata(info, directoryService, cancellationToken).ConfigureAwait(false);

            if (metadata.HasMetadata)
            {
                return metadata;
            }
        }

        return new MetadataResult<Book> { HasMetadata = false };
    }

    /// <inheritdoc />
    public bool HasChanged(BaseItem item, IDirectoryService directoryService)
    {
        foreach (IComicProvider iComicFileProvider in _comicProviders)
        {
            var fileChanged = iComicFileProvider.HasItemChanged(item);

            if (fileChanged)
            {
                return fileChanged;
            }
        }

        return false;
    }
}