| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | using System.Collections.Generic;using System.Globalization;using System.Linq;using System.Net.Http;using System.Threading;using System.Threading.Tasks;using MediaBrowser.Common.Net;using MediaBrowser.Controller.Entities;using MediaBrowser.Controller.Providers;using MediaBrowser.Model.Entities;using MediaBrowser.Model.Providers;namespace MediaBrowser.Providers.Plugins.Tmdb.People{    /// <summary>    /// Person image provider powered by TMDb.    /// </summary>    public class TmdbPersonImageProvider : IRemoteImageProvider, IHasOrder    {        private readonly IHttpClientFactory _httpClientFactory;        private readonly TmdbClientManager _tmdbClientManager;        /// <summary>        /// Initializes a new instance of the <see cref="TmdbPersonImageProvider"/> class.        /// </summary>        /// <param name="httpClientFactory">The <see cref="IHttpClientFactory"/>.</param>        /// <param name="tmdbClientManager">The <see cref="TmdbClientManager"/>.</param>        public TmdbPersonImageProvider(IHttpClientFactory httpClientFactory, TmdbClientManager tmdbClientManager)        {            _httpClientFactory = httpClientFactory;            _tmdbClientManager = tmdbClientManager;        }        /// <inheritdoc />        public string Name => TmdbUtils.ProviderName;        /// <inheritdoc />        public int Order => 0;        /// <inheritdoc />        public bool Supports(BaseItem item)        {            return item is Person;        }        /// <inheritdoc />        public IEnumerable<ImageType> GetSupportedImages(BaseItem item)        {            yield return ImageType.Primary;        }        /// <inheritdoc />        public async Task<IEnumerable<RemoteImageInfo>> GetImages(BaseItem item, CancellationToken cancellationToken)        {            var person = (Person)item;            if (!person.TryGetProviderId(MetadataProvider.Tmdb, out var personTmdbId))            {                return Enumerable.Empty<RemoteImageInfo>();            }            var language = item.GetPreferredMetadataLanguage();            var personResult = await _tmdbClientManager.GetPersonAsync(int.Parse(personTmdbId, CultureInfo.InvariantCulture), language, cancellationToken).ConfigureAwait(false);            if (personResult?.Images?.Profiles is null)            {                return Enumerable.Empty<RemoteImageInfo>();            }            return _tmdbClientManager.ConvertProfilesToRemoteImageInfo(personResult.Images.Profiles, language);        }        /// <inheritdoc />        public Task<HttpResponseMessage> GetImageResponse(string url, CancellationToken cancellationToken)        {            return _httpClientFactory.CreateClient(NamedClient.Default).GetAsync(url, cancellationToken);        }    }}
 |