< Summary - Jellyfin

Information
Class: MediaBrowser.Providers.Plugins.Tmdb.TV.TmdbSeasonImageProvider
Assembly: MediaBrowser.Providers
File(s): /srv/git/jellyfin/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeasonImageProvider.cs
Line coverage
57%
Covered lines: 4
Uncovered lines: 3
Coverable lines: 7
Total lines: 89
Line coverage: 57.1%
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_Order()100%210%
get_Name()100%210%
Supports(...)100%11100%
GetImageResponse(...)100%210%

File(s)

/srv/git/jellyfin/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeasonImageProvider.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 season image provider powered by TheMovieDb.
 19    /// </summary>
 20    public class TmdbSeasonImageProvider : 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="TmdbSeasonImageProvider"/> class.
 27        /// </summary>
 28        /// <param name="httpClientFactory">The <see cref="IHttpClientFactory"/>.</param>
 29        /// <param name="tmdbClientManager">The <see cref="TmdbClientManager"/>.</param>
 30        public TmdbSeasonImageProvider(IHttpClientFactory httpClientFactory, TmdbClientManager tmdbClientManager)
 31        {
 2232            _httpClientFactory = httpClientFactory;
 2233            _tmdbClientManager = tmdbClientManager;
 2234        }
 35
 36        /// <inheritdoc/>
 037        public int Order => 1;
 38
 39        /// <inheritdoc/>
 040        public string Name => TmdbUtils.ProviderName;
 41
 42        /// <inheritdoc />
 43        public bool Supports(BaseItem item)
 44        {
 4645            return item is Season;
 46        }
 47
 48        /// <inheritdoc />
 49        public IEnumerable<ImageType> GetSupportedImages(BaseItem item)
 50        {
 51            yield return ImageType.Primary;
 52        }
 53
 54        /// <inheritdoc />
 55        public async Task<IEnumerable<RemoteImageInfo>> GetImages(BaseItem item, CancellationToken cancellationToken)
 56        {
 57            var season = (Season)item;
 58            var series = season?.Series;
 59
 60            var seriesTmdbId = Convert.ToInt32(series?.GetProviderId(MetadataProvider.Tmdb), CultureInfo.InvariantCultur
 61
 62            if (seriesTmdbId <= 0 || season?.IndexNumber is null)
 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 seasonResult = await _tmdbClientManager
 71                .GetSeasonAsync(seriesTmdbId, season.IndexNumber.Value, null, null, cancellationToken)
 72                .ConfigureAwait(false);
 73
 74            var posters = seasonResult?.Images?.Posters;
 75            if (posters is null)
 76            {
 77                return Enumerable.Empty<RemoteImageInfo>();
 78            }
 79
 80            return _tmdbClientManager.ConvertPostersToRemoteImageInfo(posters, language);
 81        }
 82
 83        /// <inheritdoc />
 84        public Task<HttpResponseMessage> GetImageResponse(string url, CancellationToken cancellationToken)
 85        {
 086            return _httpClientFactory.CreateClient(NamedClient.Default).GetAsync(url, cancellationToken);
 87        }
 88    }
 89}