< Summary - Jellyfin

Information
Class: MediaBrowser.Providers.Plugins.Tmdb.BoxSets.TmdbBoxSetImageProvider
Assembly: MediaBrowser.Providers
File(s): /srv/git/jellyfin/MediaBrowser.Providers/Plugins/Tmdb/BoxSets/TmdbBoxSetImageProvider.cs
Line coverage
33%
Covered lines: 4
Uncovered lines: 8
Coverable lines: 12
Total lines: 92
Line coverage: 33.3%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
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%
get_Name()100%210%
get_Order()100%210%
Supports(...)100%11100%
GetSupportedImages(...)100%210%
GetImageResponse(...)100%210%

File(s)

/srv/git/jellyfin/MediaBrowser.Providers/Plugins/Tmdb/BoxSets/TmdbBoxSetImageProvider.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Globalization;
 4using System.Linq;
 5using System.Net.Http;
 6using System.Threading;
 7using System.Threading.Tasks;
 8using MediaBrowser.Common.Net;
 9using MediaBrowser.Controller.Entities;
 10using MediaBrowser.Controller.Entities.Movies;
 11using MediaBrowser.Controller.Providers;
 12using MediaBrowser.Model.Entities;
 13using MediaBrowser.Model.Providers;
 14
 15namespace MediaBrowser.Providers.Plugins.Tmdb.BoxSets
 16{
 17    /// <summary>
 18    /// BoxSet image provider powered by TMDb.
 19    /// </summary>
 20    public class TmdbBoxSetImageProvider : IRemoteImageProvider, IHasOrder
 21    {
 22        private readonly IHttpClientFactory _httpClientFactory;
 23        private readonly TmdbClientManager _tmdbClientManager;
 24
 25        /// <summary>
 26        /// Initializes a new instance of the <see cref="TmdbBoxSetImageProvider"/> class.
 27        /// </summary>
 28        /// <param name="httpClientFactory">The <see cref="IHttpClientFactory"/>.</param>
 29        /// <param name="tmdbClientManager">The <see cref="TmdbClientManager"/>.</param>
 30        public TmdbBoxSetImageProvider(IHttpClientFactory httpClientFactory, TmdbClientManager tmdbClientManager)
 31        {
 2232            _httpClientFactory = httpClientFactory;
 2233            _tmdbClientManager = tmdbClientManager;
 2234        }
 35
 36        /// <inheritdoc />
 037        public string Name => TmdbUtils.ProviderName;
 38
 39        /// <inheritdoc />
 040        public int Order => 0;
 41
 42        /// <inheritdoc />
 43        public bool Supports(BaseItem item)
 44        {
 4645            return item is BoxSet;
 46        }
 47
 48        /// <inheritdoc />
 49        public IEnumerable<ImageType> GetSupportedImages(BaseItem item) =>
 050        [
 051            ImageType.Primary,
 052            ImageType.Backdrop,
 053            ImageType.Thumb
 054        ];
 55
 56        /// <inheritdoc />
 57        public async Task<IEnumerable<RemoteImageInfo>> GetImages(BaseItem item, CancellationToken cancellationToken)
 58        {
 59            var tmdbId = Convert.ToInt32(item.GetProviderId(MetadataProvider.Tmdb), CultureInfo.InvariantCulture);
 60
 61            if (tmdbId <= 0)
 62            {
 63                return Enumerable.Empty<RemoteImageInfo>();
 64            }
 65
 66            var language = item.GetPreferredMetadataLanguage();
 67
 68            // TODO use image languages if All Languages isn't toggled, but there's currently no way to get that value i
 69            var collection = await _tmdbClientManager.GetCollectionAsync(tmdbId, null, null, cancellationToken).Configur
 70
 71            if (collection?.Images is null)
 72            {
 73                return Enumerable.Empty<RemoteImageInfo>();
 74            }
 75
 76            var posters = collection.Images.Posters;
 77            var backdrops = collection.Images.Backdrops;
 78            var remoteImages = new List<RemoteImageInfo>(posters.Count + backdrops.Count);
 79
 80            remoteImages.AddRange(_tmdbClientManager.ConvertPostersToRemoteImageInfo(posters, language));
 81            remoteImages.AddRange(_tmdbClientManager.ConvertBackdropsToRemoteImageInfo(backdrops, language));
 82
 83            return remoteImages;
 84        }
 85
 86        /// <inheritdoc />
 87        public Task<HttpResponseMessage> GetImageResponse(string url, CancellationToken cancellationToken)
 88        {
 089            return _httpClientFactory.CreateClient(NamedClient.Default).GetAsync(url, cancellationToken);
 90        }
 91    }
 92}