< Summary - Jellyfin

Information
Class: MediaBrowser.Providers.Plugins.Tmdb.People.TmdbPersonImageProvider
Assembly: MediaBrowser.Providers
File(s): /srv/git/jellyfin/MediaBrowser.Providers/Plugins/Tmdb/People/TmdbPersonImageProvider.cs
Line coverage
21%
Covered lines: 4
Uncovered lines: 15
Coverable lines: 19
Total lines: 78
Line coverage: 21%
Branch coverage
0%
Covered branches: 0
Total branches: 8
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/11/2026 - 12:15:59 AM Line coverage: 21% (4/19) Branch coverage: 0% (0/8) Total lines: 7910/29/2026 - 12:17:11 AM Line coverage: 21% (4/19) Branch coverage: 0% (0/8) Total lines: 78 5/11/2026 - 12:15:59 AM Line coverage: 21% (4/19) Branch coverage: 0% (0/8) Total lines: 7910/29/2026 - 12:17:11 AM Line coverage: 21% (4/19) Branch coverage: 0% (0/8) Total lines: 78

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%7280%
GetImageResponse(...)100%210%

File(s)

/srv/git/jellyfin/MediaBrowser.Providers/Plugins/Tmdb/People/TmdbPersonImageProvider.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.Providers;
 9using MediaBrowser.Model.Entities;
 10using MediaBrowser.Model.Providers;
 11
 12namespace MediaBrowser.Providers.Plugins.Tmdb.People
 13{
 14    /// <summary>
 15    /// Person image provider powered by TMDb.
 16    /// </summary>
 17    public class TmdbPersonImageProvider : IRemoteImageProvider, IHasOrder
 18    {
 19        private readonly IHttpClientFactory _httpClientFactory;
 20        private readonly TmdbClientManager _tmdbClientManager;
 21
 22        /// <summary>
 23        /// Initializes a new instance of the <see cref="TmdbPersonImageProvider"/> class.
 24        /// </summary>
 25        /// <param name="httpClientFactory">The <see cref="IHttpClientFactory"/>.</param>
 26        /// <param name="tmdbClientManager">The <see cref="TmdbClientManager"/>.</param>
 27        public TmdbPersonImageProvider(IHttpClientFactory httpClientFactory, TmdbClientManager tmdbClientManager)
 28        {
 2729            _httpClientFactory = httpClientFactory;
 2730            _tmdbClientManager = tmdbClientManager;
 2731        }
 32
 33        /// <inheritdoc />
 034        public string Name => TmdbUtils.ProviderName;
 35
 36        /// <inheritdoc />
 037        public int Order => 0;
 38
 39        /// <inheritdoc />
 40        public bool Supports(BaseItem item)
 41        {
 10742            return item is Person;
 43        }
 44
 45        /// <inheritdoc />
 46        public IEnumerable<ImageType> GetSupportedImages(BaseItem item)
 47        {
 048            yield return ImageType.Primary;
 049        }
 50
 51        /// <inheritdoc />
 52        public async Task<IEnumerable<RemoteImageInfo>> GetImages(BaseItem item, CancellationToken cancellationToken)
 53        {
 054            var person = (Person)item;
 55
 056            if (!person.TryGetTmdbId(out var personTmdbId))
 57            {
 058                return Enumerable.Empty<RemoteImageInfo>();
 59            }
 60
 061            var language = item.GetPreferredMetadataLanguage();
 062            var countryCode = item.GetPreferredMetadataCountryCode();
 063            var personResult = await _tmdbClientManager.GetPersonAsync(personTmdbId, language, countryCode, cancellation
 064            if (personResult?.Images?.Profiles is null)
 65            {
 066                return Enumerable.Empty<RemoteImageInfo>();
 67            }
 68
 069            return _tmdbClientManager.ConvertProfilesToRemoteImageInfo(personResult.Images.Profiles, language);
 070        }
 71
 72        /// <inheritdoc />
 73        public Task<HttpResponseMessage> GetImageResponse(string url, CancellationToken cancellationToken)
 74        {
 075            return _httpClientFactory.CreateClient(NamedClient.Default).GetAsync(url, cancellationToken);
 76        }
 77    }
 78}