< 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
14%
Covered lines: 4
Uncovered lines: 24
Coverable lines: 28
Total lines: 97
Line coverage: 14.2%
Branch coverage
0%
Covered branches: 0
Total branches: 16
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100 5/16/2026 - 12:15:55 AM Line coverage: 14.2% (4/28) Branch coverage: 0% (0/16) Total lines: 9910/29/2026 - 12:17:11 AM Line coverage: 14.2% (4/28) Branch coverage: 0% (0/16) Total lines: 97 5/16/2026 - 12:15:55 AM Line coverage: 14.2% (4/28) Branch coverage: 0% (0/16) Total lines: 9910/29/2026 - 12:17:11 AM Line coverage: 14.2% (4/28) Branch coverage: 0% (0/16) Total lines: 97

Coverage delta

Coverage delta 1 -1

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%
GetImages()0%272160%
GetImageResponse(...)100%210%

File(s)

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

#LineLine coverage
 1using System.Collections.Generic;
 2using System.Linq;
 3using System.Net.Http;
 4using System.Threading;
 5using System.Threading.Tasks;
 6using MediaBrowser.Common.Net;
 7using MediaBrowser.Controller.Entities;
 8using MediaBrowser.Controller.Entities.Movies;
 9using MediaBrowser.Controller.Providers;
 10using MediaBrowser.Model.Entities;
 11using MediaBrowser.Model.Providers;
 12
 13namespace MediaBrowser.Providers.Plugins.Tmdb.BoxSets
 14{
 15    /// <summary>
 16    /// BoxSet image provider powered by TMDb.
 17    /// </summary>
 18    public class TmdbBoxSetImageProvider : IRemoteImageProvider, IHasOrder
 19    {
 20        private readonly IHttpClientFactory _httpClientFactory;
 21        private readonly TmdbClientManager _tmdbClientManager;
 22
 23        /// <summary>
 24        /// Initializes a new instance of the <see cref="TmdbBoxSetImageProvider"/> class.
 25        /// </summary>
 26        /// <param name="httpClientFactory">The <see cref="IHttpClientFactory"/>.</param>
 27        /// <param name="tmdbClientManager">The <see cref="TmdbClientManager"/>.</param>
 28        public TmdbBoxSetImageProvider(IHttpClientFactory httpClientFactory, TmdbClientManager tmdbClientManager)
 29        {
 2730            _httpClientFactory = httpClientFactory;
 2731            _tmdbClientManager = tmdbClientManager;
 2732        }
 33
 34        /// <inheritdoc />
 035        public string Name => TmdbUtils.ProviderName;
 36
 37        /// <inheritdoc />
 038        public int Order => 0;
 39
 40        /// <inheritdoc />
 41        public bool Supports(BaseItem item)
 42        {
 10743            return item is BoxSet;
 44        }
 45
 46        /// <inheritdoc />
 47        public IEnumerable<ImageType> GetSupportedImages(BaseItem item) =>
 048        [
 049            ImageType.Primary,
 050            ImageType.Backdrop,
 051            ImageType.Thumb
 052        ];
 53
 54        /// <inheritdoc />
 55        public async Task<IEnumerable<RemoteImageInfo>> GetImages(BaseItem item, CancellationToken cancellationToken)
 56        {
 057            item.TryGetTmdbId(out var tmdbId);
 58
 059            if (tmdbId <= 0)
 60            {
 061                return Enumerable.Empty<RemoteImageInfo>();
 62            }
 63
 064            var language = item.GetPreferredMetadataLanguage();
 65
 66            // TODO use image languages if All Languages isn't toggled, but there's currently no way to get that value i
 067            var collection = await _tmdbClientManager.GetCollectionAsync(tmdbId, null, null, null, cancellationToken).Co
 68
 069            if (collection?.Images is null)
 70            {
 071                return Enumerable.Empty<RemoteImageInfo>();
 72            }
 73
 074            var posters = collection.Images.Posters;
 075            var backdrops = collection.Images.Backdrops;
 076            var remoteImages = new List<RemoteImageInfo>(posters?.Count ?? 0 + backdrops?.Count ?? 0);
 77
 078            if (posters is not null)
 79            {
 080                remoteImages.AddRange(_tmdbClientManager.ConvertPostersToRemoteImageInfo(posters, language));
 81            }
 82
 083            if (backdrops is not null)
 84            {
 085                remoteImages.AddRange(_tmdbClientManager.ConvertBackdropsToRemoteImageInfo(backdrops, language));
 86            }
 87
 088            return remoteImages;
 089        }
 90
 91        /// <inheritdoc />
 92        public Task<HttpResponseMessage> GetImageResponse(string url, CancellationToken cancellationToken)
 93        {
 094            return _httpClientFactory.CreateClient(NamedClient.Default).GetAsync(url, cancellationToken);
 95        }
 96    }
 97}