using CommonIO ;
using MediaBrowser.Common.Net ;
using MediaBrowser.Controller.Configuration ;
using MediaBrowser.Controller.Entities ;
using MediaBrowser.Controller.Entities.Movies ;
using MediaBrowser.Controller.Entities.TV ;
using MediaBrowser.Controller.LiveTv ;
using MediaBrowser.Controller.Providers ;
using MediaBrowser.Model.Entities ;
using MediaBrowser.Model.Providers ;
using MediaBrowser.Model.Serialization ;
using System.Collections.Generic ;
using System.Threading ;
using System.Threading.Tasks ;
namespace MediaBrowser.Providers.Omdb
{
public class OmdbImageProvider : IRemoteImageProvider , IHasOrder
{
private readonly IHttpClient _httpClient ;
private readonly IJsonSerializer _jsonSerializer ;
private readonly IFileSystem _fileSystem ;
private readonly IServerConfigurationManager _configurationManager ;
public OmdbImageProvider ( IJsonSerializer jsonSerializer , IHttpClient httpClient , IFileSystem fileSystem , IServerConfigurationManager configurationManager )
{
_jsonSerializer = jsonSerializer ;
_httpClient = httpClient ;
_fileSystem = fileSystem ;
_configurationManager = configurationManager ;
}
public IEnumerable < ImageType > GetSupportedImages ( IHasImages item )
{
return new List < ImageType >
{
ImageType . Primary
} ;
}
public async Task < IEnumerable < RemoteImageInfo > > GetImages ( IHasImages item , CancellationToken cancellationToken )
{
var imdbId = item . GetProviderId ( MetadataProviders . Imdb ) ;
var list = new List < RemoteImageInfo > ( ) ;
var provider = new OmdbProvider ( _jsonSerializer , _httpClient , _fileSystem , _configurationManager ) ;
if ( ! string . IsNullOrWhiteSpace ( imdbId ) )
{
OmdbProvider . RootObject rootObject = await provider . GetRootObject ( imdbId , cancellationToken ) . ConfigureAwait ( false ) ;
if ( ! string . IsNullOrEmpty ( rootObject . Poster ) )
{
list . Add ( new RemoteImageInfo
{
ProviderName = Name ,
Url = string . Format ( "https://img.omdbapi.com/?i={0}&apikey=82e83907" , imdbId )
} ) ;
}
}
return list ;
}
public Task < HttpResponseInfo > GetImageResponse ( string url , CancellationToken cancellationToken )
{
return _httpClient . GetResponse ( new HttpRequestOptions
{
CancellationToken = cancellationToken ,
Url = url ,
ResourcePool = OmdbProvider . ResourcePool
} ) ;
}
public string Name
{
get { return "The Open Movie Database" ; }
}
public bool Supports ( IHasImages item )
{
// Supports images for tv movies
var tvProgram = item as LiveTvProgram ;
if ( tvProgram ! = null & & tvProgram . IsMovie )
{
return true ;
}
return item is Movie | | item is Trailer | | item is Episode ;
}
public int Order
{
get
{
// After other internet providers, because they're better
// But before fallback providers like screengrab
return 90 ;
}
}
}
}