< Summary - Jellyfin

Information
Class: MediaBrowser.Providers.Plugins.Tmdb.TV.TmdbSeriesImageProvider
Assembly: MediaBrowser.Providers
File(s): /srv/git/jellyfin/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeriesImageProvider.cs
Line coverage
30%
Covered lines: 4
Uncovered lines: 9
Coverable lines: 13
Total lines: 97
Line coverage: 30.7%
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/TV/TmdbSeriesImageProvider.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.TV;
 11using MediaBrowser.Controller.Providers;
 12using MediaBrowser.Model.Entities;
 13using MediaBrowser.Model.Providers;
 14
 15namespace MediaBrowser.Providers.Plugins.Tmdb.TV
 16{
 17    /// <summary>
 18    /// TV series image provider powered by TheMovieDb.
 19    /// </summary>
 20    public class TmdbSeriesImageProvider : 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="TmdbSeriesImageProvider"/> class.
 27        /// </summary>
 28        /// <param name="httpClientFactory">The <see cref="IHttpClientFactory"/>.</param>
 29        /// <param name="tmdbClientManager">The <see cref="TmdbClientManager"/>.</param>
 30        public TmdbSeriesImageProvider(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 => 2;
 41
 42        /// <inheritdoc />
 43        public bool Supports(BaseItem item)
 44        {
 4645            return item is Series;
 46        }
 47
 48        /// <inheritdoc />
 49        public IEnumerable<ImageType> GetSupportedImages(BaseItem item) =>
 050        [
 051            ImageType.Primary,
 052            ImageType.Backdrop,
 053            ImageType.Logo,
 054            ImageType.Thumb
 055        ];
 56
 57        /// <inheritdoc />
 58        public async Task<IEnumerable<RemoteImageInfo>> GetImages(BaseItem item, CancellationToken cancellationToken)
 59        {
 60            var tmdbId = item.GetProviderId(MetadataProvider.Tmdb);
 61
 62            if (string.IsNullOrEmpty(tmdbId))
 63            {
 64                return Enumerable.Empty<RemoteImageInfo>();
 65            }
 66
 67            var language = item.GetPreferredMetadataLanguage();
 68
 69            // TODO use image languages if All Languages isn't toggled, but there's currently no way to get that value i
 70            var series = await _tmdbClientManager
 71                .GetSeriesAsync(Convert.ToInt32(tmdbId, CultureInfo.InvariantCulture), null, null, cancellationToken)
 72                .ConfigureAwait(false);
 73
 74            if (series?.Images is null)
 75            {
 76                return Enumerable.Empty<RemoteImageInfo>();
 77            }
 78
 79            var posters = series.Images.Posters;
 80            var backdrops = series.Images.Backdrops;
 81            var logos = series.Images.Logos;
 82            var remoteImages = new List<RemoteImageInfo>(posters.Count + backdrops.Count + logos.Count);
 83
 84            remoteImages.AddRange(_tmdbClientManager.ConvertPostersToRemoteImageInfo(posters, language));
 85            remoteImages.AddRange(_tmdbClientManager.ConvertBackdropsToRemoteImageInfo(backdrops, language));
 86            remoteImages.AddRange(_tmdbClientManager.ConvertLogosToRemoteImageInfo(logos, language));
 87
 88            return remoteImages;
 89        }
 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}