diff options
Diffstat (limited to 'MediaBrowser.Controller')
12 files changed, 191 insertions, 59 deletions
diff --git a/MediaBrowser.Controller/Plugins/PluginSecurityManager.cs b/MediaBrowser.Controller/Plugins/PluginSecurityManager.cs index 9accef621..a08eb457d 100644 --- a/MediaBrowser.Controller/Plugins/PluginSecurityManager.cs +++ b/MediaBrowser.Controller/Plugins/PluginSecurityManager.cs @@ -44,7 +44,10 @@ namespace MediaBrowser.Controller.Plugins /// </summary> private INetworkManager _networkManager; - private IKernel _kernel; + /// <summary> + /// The _kernel + /// </summary> + private readonly IKernel _kernel; /// <summary> /// Initializes a new instance of the <see cref="PluginSecurityManager" /> class. diff --git a/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs b/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs index e833e4931..0a0b1110a 100644 --- a/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs +++ b/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs @@ -1,4 +1,5 @@ using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.Net; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Model.Entities; @@ -17,6 +18,22 @@ namespace MediaBrowser.Controller.Providers.Movies class FanArtMovieProvider : FanartBaseProvider { /// <summary> + /// Gets the HTTP client. + /// </summary> + /// <value>The HTTP client.</value> + protected IHttpClient HttpClient { get; private set; } + + public FanArtMovieProvider(IHttpClient httpClient) + : base() + { + if (httpClient == null) + { + throw new ArgumentNullException("httpClient"); + } + HttpClient = httpClient; + } + + /// <summary> /// The fan art base URL /// </summary> protected string FanArtBaseUrl = "http://api.fanart.tv/webservice/movie/{0}/{1}/xml/all/1/1"; @@ -70,7 +87,7 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (var xml = await Kernel.Instance.HttpManager.Get(url, Kernel.Instance.ResourcePools.FanArt, cancellationToken).ConfigureAwait(false)) + using (var xml = await HttpClient.Get(url, Kernel.Instance.ResourcePools.FanArt, cancellationToken).ConfigureAwait(false)) { doc.Load(xml); } @@ -113,7 +130,7 @@ namespace MediaBrowser.Controller.Providers.Movies } } cancellationToken.ThrowIfCancellationRequested(); - + if (Kernel.Instance.Configuration.DownloadMovieArt && !item.ResolveArgs.ContainsMetaFileByName(ART_FILE)) { var node = @@ -139,7 +156,7 @@ namespace MediaBrowser.Controller.Providers.Movies } } cancellationToken.ThrowIfCancellationRequested(); - + if (Kernel.Instance.Configuration.DownloadMovieDisc && !item.ResolveArgs.ContainsMetaFileByName(DISC_FILE)) { var node = doc.SelectSingleNode("//fanart/movie/moviediscs/moviedisc[@lang = \"" + language + "\"]/@url") ?? @@ -163,7 +180,7 @@ namespace MediaBrowser.Controller.Providers.Movies } cancellationToken.ThrowIfCancellationRequested(); - + if (Kernel.Instance.Configuration.DownloadMovieBanner && !item.ResolveArgs.ContainsMetaFileByName(BANNER_FILE)) { var node = doc.SelectSingleNode("//fanart/movie/moviebanners/moviebanner[@lang = \"" + language + "\"]/@url") ?? @@ -187,7 +204,7 @@ namespace MediaBrowser.Controller.Providers.Movies } cancellationToken.ThrowIfCancellationRequested(); - + if (Kernel.Instance.Configuration.DownloadMovieThumb && !item.ResolveArgs.ContainsMetaFileByName(THUMB_FILE)) { var node = doc.SelectSingleNode("//fanart/movie/moviethumbs/moviethumb[@lang = \"" + language + "\"]/@url") ?? diff --git a/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs index bc261de6d..9bd28d1ad 100644 --- a/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs +++ b/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs @@ -1,4 +1,6 @@ -using MediaBrowser.Common.Extensions; +using System.Net; +using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.Net; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Model.Entities; @@ -9,7 +11,6 @@ using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; -using System.Net; using System.Text; using System.Text.RegularExpressions; using System.Threading; @@ -37,18 +38,30 @@ namespace MediaBrowser.Controller.Providers.Movies protected IJsonSerializer JsonSerializer { get; private set; } /// <summary> + /// Gets the HTTP client. + /// </summary> + /// <value>The HTTP client.</value> + protected IHttpClient HttpClient { get; private set; } + + /// <summary> /// Initializes a new instance of the <see cref="MovieDbProvider" /> class. /// </summary> /// <param name="jsonSerializer">The json serializer.</param> + /// <param name="httpClient">The HTTP client.</param> /// <exception cref="System.ArgumentNullException">jsonSerializer</exception> - public MovieDbProvider(IJsonSerializer jsonSerializer) + public MovieDbProvider(IJsonSerializer jsonSerializer, IHttpClient httpClient) : base() { if (jsonSerializer == null) { throw new ArgumentNullException("jsonSerializer"); } + if (httpClient == null) + { + throw new ArgumentNullException("httpClient"); + } JsonSerializer = jsonSerializer; + HttpClient = httpClient; } /// <summary> @@ -114,7 +127,7 @@ namespace MediaBrowser.Controller.Providers.Movies { get { - LazyInitializer.EnsureInitialized(ref _tmdbSettingsTask, ref _tmdbSettingsTaskInitialized, ref _tmdbSettingsTaskSyncLock, () => GetTmdbSettings(JsonSerializer)); + LazyInitializer.EnsureInitialized(ref _tmdbSettingsTask, ref _tmdbSettingsTaskInitialized, ref _tmdbSettingsTaskSyncLock, () => GetTmdbSettings(JsonSerializer, HttpClient)); return _tmdbSettingsTask; } } @@ -123,11 +136,11 @@ namespace MediaBrowser.Controller.Providers.Movies /// Gets the TMDB settings. /// </summary> /// <returns>Task{TmdbSettingsResult}.</returns> - private static async Task<TmdbSettingsResult> GetTmdbSettings(IJsonSerializer jsonSerializer) + private static async Task<TmdbSettingsResult> GetTmdbSettings(IJsonSerializer jsonSerializer, IHttpClient httpClient) { try { - using (var json = await Kernel.Instance.HttpManager.Get(String.Format(TmdbConfigUrl, ApiKey), Kernel.Instance.ResourcePools.MovieDb, CancellationToken.None).ConfigureAwait(false)) + using (var json = await httpClient.Get(String.Format(TmdbConfigUrl, ApiKey), Kernel.Instance.ResourcePools.MovieDb, CancellationToken.None).ConfigureAwait(false)) { return jsonSerializer.DeserializeFromStream<TmdbSettingsResult>(json); } @@ -189,7 +202,7 @@ namespace MediaBrowser.Controller.Providers.Movies { //in addition to ours, we need to set the last refreshed time for the local data provider //so it won't see the new files we download and process them all over again - if (JsonProvider == null) JsonProvider = new MovieProviderFromJson(JsonSerializer); + if (JsonProvider == null) JsonProvider = new MovieProviderFromJson(HttpClient, JsonSerializer); var data = item.ProviderData.GetValueOrDefault(JsonProvider.Id, new BaseProviderInfo { ProviderId = JsonProvider.Id }); data.LastRefreshed = value; item.ProviderData[JsonProvider.Id] = data; @@ -460,7 +473,7 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await Kernel.Instance.HttpManager.Get(url3, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(url3, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) { searchResult = JsonSerializer.DeserializeFromStream<TmdbMovieSearchResults>(json); } @@ -492,7 +505,7 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await Kernel.Instance.HttpManager.Get(url3, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(url3, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) { searchResult = JsonSerializer.DeserializeFromStream<TmdbMovieSearchResults>(json); } @@ -531,7 +544,7 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await Kernel.Instance.HttpManager.Get(url3, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(url3, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) { var response = JsonSerializer.DeserializeFromStream<TmdbAltTitleResults>(json); @@ -611,7 +624,7 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await Kernel.Instance.HttpManager.Get(url, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(url, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) { var movieResult = JsonSerializer.DeserializeFromStream<CompleteMovieData>(json); @@ -710,7 +723,7 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (var json = await Kernel.Instance.HttpManager.Get(url, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) + using (var json = await HttpClient.Get(url, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) { mainResult = JsonSerializer.DeserializeFromStream<CompleteMovieData>(json); } @@ -742,7 +755,7 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await Kernel.Instance.HttpManager.Get(url, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(url, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) { mainResult = JsonSerializer.DeserializeFromStream<CompleteMovieData>(json); } @@ -777,7 +790,7 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await Kernel.Instance.HttpManager.Get(url, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(url, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) { cast = JsonSerializer.DeserializeFromStream<TmdbCastResult>(json); } @@ -803,7 +816,7 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await Kernel.Instance.HttpManager.Get(url, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(url, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) { releases = JsonSerializer.DeserializeFromStream<TmdbReleasesResult>(json); } @@ -831,7 +844,7 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await Kernel.Instance.HttpManager.Get(url, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(url, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) { images = JsonSerializer.DeserializeFromStream<TmdbImages>(json); } diff --git a/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs b/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs index 5de17aab0..6b83c861e 100644 --- a/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs +++ b/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Serialization; using System; using System.IO; @@ -12,7 +13,7 @@ namespace MediaBrowser.Controller.Providers.Movies /// </summary> public class MovieProviderFromJson : MovieDbProvider { - public MovieProviderFromJson(IJsonSerializer jsonSerializer) : base(jsonSerializer) + public MovieProviderFromJson(IHttpClient httpClient, IJsonSerializer jsonSerializer) : base(jsonSerializer, httpClient) { } diff --git a/MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs b/MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs index 7517ec65c..f87af5a1f 100644 --- a/MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs +++ b/MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Serialization; using System; using System.IO; @@ -12,7 +13,8 @@ namespace MediaBrowser.Controller.Providers.Movies /// </summary> class PersonProviderFromJson : TmdbPersonProvider { - public PersonProviderFromJson(IJsonSerializer jsonSerializer) : base(jsonSerializer) + public PersonProviderFromJson(IHttpClient httpClient, IJsonSerializer jsonSerializer) + : base(httpClient, jsonSerializer) { } diff --git a/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs b/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs index 32013614c..2e1ca8d04 100644 --- a/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs +++ b/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs @@ -1,6 +1,8 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Net; +using MediaBrowser.Model.Serialization; using System; using System.Collections.Generic; using System.Globalization; @@ -9,7 +11,6 @@ using System.Linq; using System.Net; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.Serialization; namespace MediaBrowser.Controller.Providers.Movies { @@ -30,17 +31,29 @@ namespace MediaBrowser.Controller.Providers.Movies protected IJsonSerializer JsonSerializer { get; private set; } /// <summary> + /// Gets the HTTP client. + /// </summary> + /// <value>The HTTP client.</value> + protected IHttpClient HttpClient { get; private set; } + + /// <summary> /// Initializes a new instance of the <see cref="MovieDbProvider" /> class. /// </summary> + /// <param name="httpClient">The HTTP client.</param> /// <param name="jsonSerializer">The json serializer.</param> /// <exception cref="System.ArgumentNullException">jsonSerializer</exception> - public TmdbPersonProvider(IJsonSerializer jsonSerializer) + public TmdbPersonProvider(IHttpClient httpClient, IJsonSerializer jsonSerializer) : base() { if (jsonSerializer == null) { throw new ArgumentNullException("jsonSerializer"); } + if (httpClient == null) + { + throw new ArgumentNullException("httpClient"); + } + HttpClient = httpClient; JsonSerializer = jsonSerializer; } @@ -151,7 +164,7 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await Kernel.Instance.HttpManager.Get(url, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(url, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) { searchResult = JsonSerializer.DeserializeFromStream<PersonSearchResults>(json); } @@ -177,7 +190,7 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await Kernel.Instance.HttpManager.Get(url, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(url, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) { if (json != null) { @@ -240,7 +253,7 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await Kernel.Instance.HttpManager.Get(url, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(url, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) { if (json != null) { @@ -308,7 +321,7 @@ namespace MediaBrowser.Controller.Providers.Movies var localPath = Path.Combine(item.MetaLocation, targetName); if (!item.ResolveArgs.ContainsMetaFileByName(targetName)) { - using (var sourceStream = await Kernel.Instance.HttpManager.FetchToMemoryStream(source, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) + using (var sourceStream = await HttpClient.GetMemoryStream(source, Kernel.Instance.ResourcePools.MovieDb, cancellationToken).ConfigureAwait(false)) { await Kernel.Instance.FileSystemManager.SaveToLibraryFilesystem(item, localPath, sourceStream, cancellationToken).ConfigureAwait(false); diff --git a/MediaBrowser.Controller/Providers/ProviderManager.cs b/MediaBrowser.Controller/Providers/ProviderManager.cs index c5e70dfae..0f7198756 100644 --- a/MediaBrowser.Controller/Providers/ProviderManager.cs +++ b/MediaBrowser.Controller/Providers/ProviderManager.cs @@ -1,6 +1,6 @@ using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; -using MediaBrowser.Common.Kernel; +using MediaBrowser.Common.Net; using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Logging; using System; @@ -33,16 +33,23 @@ namespace MediaBrowser.Controller.Providers /// The _logger /// </summary> private readonly ILogger _logger; - + + /// <summary> + /// The _HTTP client + /// </summary> + private readonly IHttpClient _httpClient; + /// <summary> /// Initializes a new instance of the <see cref="ProviderManager" /> class. /// </summary> /// <param name="kernel">The kernel.</param> + /// <param name="httpClient">The HTTP client.</param> /// <param name="logger">The logger.</param> - public ProviderManager(Kernel kernel, ILogger logger) + public ProviderManager(Kernel kernel, IHttpClient httpClient, ILogger logger) : base(kernel) { _logger = logger; + _httpClient = httpClient; _remoteImageCache = new FileSystemRepository(ImagesDataPath); } @@ -287,7 +294,7 @@ namespace MediaBrowser.Controller.Providers Path.Combine(item.MetaLocation, targetName) : _remoteImageCache.GetResourcePath(item.GetType().FullName + item.Path.ToLower(), targetName); - var img = await Kernel.HttpManager.FetchToMemoryStream(source, resourcePool, cancellationToken).ConfigureAwait(false); + var img = await _httpClient.GetMemoryStream(source, resourcePool, cancellationToken).ConfigureAwait(false); if (Kernel.Configuration.SaveLocalMeta) // queue to media directories { diff --git a/MediaBrowser.Controller/Providers/TV/FanArtTVProvider.cs b/MediaBrowser.Controller/Providers/TV/FanArtTVProvider.cs index 05ab172a8..8d5c2e0c7 100644 --- a/MediaBrowser.Controller/Providers/TV/FanArtTVProvider.cs +++ b/MediaBrowser.Controller/Providers/TV/FanArtTVProvider.cs @@ -1,4 +1,5 @@ using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.Net; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Model.Entities; @@ -15,6 +16,22 @@ namespace MediaBrowser.Controller.Providers.TV { protected string FanArtBaseUrl = "http://api.fanart.tv/webservice/series/{0}/{1}/xml/all/1/1"; + /// <summary> + /// Gets the HTTP client. + /// </summary> + /// <value>The HTTP client.</value> + protected IHttpClient HttpClient { get; private set; } + + public FanArtTVProvider(IHttpClient httpClient) + : base() + { + if (httpClient == null) + { + throw new ArgumentNullException("httpClient"); + } + HttpClient = httpClient; + } + public override bool Supports(BaseItem item) { return item is Series; @@ -36,7 +53,7 @@ namespace MediaBrowser.Controller.Providers.TV protected override async Task<bool> FetchAsyncInternal(BaseItem item, bool force, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); - + var series = (Series)item; if (ShouldFetch(series, series.ProviderData.GetValueOrDefault(Id, new BaseProviderInfo { ProviderId = Id }))) { @@ -46,7 +63,7 @@ namespace MediaBrowser.Controller.Providers.TV try { - using (var xml = await Kernel.Instance.HttpManager.Get(url, Kernel.Instance.ResourcePools.FanArt, cancellationToken).ConfigureAwait(false)) + using (var xml = await HttpClient.Get(url, Kernel.Instance.ResourcePools.FanArt, cancellationToken).ConfigureAwait(false)) { doc.Load(xml); } @@ -56,7 +73,7 @@ namespace MediaBrowser.Controller.Providers.TV } cancellationToken.ThrowIfCancellationRequested(); - + if (doc.HasChildNodes) { string path; @@ -83,7 +100,7 @@ namespace MediaBrowser.Controller.Providers.TV } cancellationToken.ThrowIfCancellationRequested(); - + if (Kernel.Instance.Configuration.DownloadTVArt && !series.ResolveArgs.ContainsMetaFileByName(ART_FILE)) { var node = doc.SelectSingleNode("//fanart/series/cleararts/clearart[@lang = \"" + language + "\"]/@url") ?? @@ -107,7 +124,7 @@ namespace MediaBrowser.Controller.Providers.TV } cancellationToken.ThrowIfCancellationRequested(); - + if (Kernel.Instance.Configuration.DownloadTVThumb && !series.ResolveArgs.ContainsMetaFileByName(THUMB_FILE)) { var node = doc.SelectSingleNode("//fanart/series/tvthumbs/tvthumb[@lang = \"" + language + "\"]/@url") ?? diff --git a/MediaBrowser.Controller/Providers/TV/RemoteEpisodeProvider.cs b/MediaBrowser.Controller/Providers/TV/RemoteEpisodeProvider.cs index b06598114..a31520c9d 100644 --- a/MediaBrowser.Controller/Providers/TV/RemoteEpisodeProvider.cs +++ b/MediaBrowser.Controller/Providers/TV/RemoteEpisodeProvider.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Extensions; using MediaBrowser.Controller.Resolvers.TV; @@ -19,6 +20,21 @@ namespace MediaBrowser.Controller.Providers.TV /// </summary> class RemoteEpisodeProvider : BaseMetadataProvider { + /// <summary> + /// Gets the HTTP client. + /// </summary> + /// <value>The HTTP client.</value> + protected IHttpClient HttpClient { get; private set; } + + public RemoteEpisodeProvider(IHttpClient httpClient) + : base() + { + if (httpClient == null) + { + throw new ArgumentNullException("httpClient"); + } + HttpClient = httpClient; + } /// <summary> /// The episode query @@ -171,7 +187,7 @@ namespace MediaBrowser.Controller.Providers.TV try { - using (var result = await Kernel.Instance.HttpManager.Get(url, Kernel.Instance.ResourcePools.TvDb, cancellationToken).ConfigureAwait(false)) + using (var result = await HttpClient.Get(url, Kernel.Instance.ResourcePools.TvDb, cancellationToken).ConfigureAwait(false)) { doc.Load(result); } @@ -189,7 +205,7 @@ namespace MediaBrowser.Controller.Providers.TV try { - using (var result = await Kernel.Instance.HttpManager.Get(url, Kernel.Instance.ResourcePools.TvDb, cancellationToken).ConfigureAwait(false)) + using (var result = await HttpClient.Get(url, Kernel.Instance.ResourcePools.TvDb, cancellationToken).ConfigureAwait(false)) { if (result != null) doc.Load(result); usingAbsoluteData = true; diff --git a/MediaBrowser.Controller/Providers/TV/RemoteSeasonProvider.cs b/MediaBrowser.Controller/Providers/TV/RemoteSeasonProvider.cs index 3e7f6b1a2..72468c24a 100644 --- a/MediaBrowser.Controller/Providers/TV/RemoteSeasonProvider.cs +++ b/MediaBrowser.Controller/Providers/TV/RemoteSeasonProvider.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Resolvers.TV; using MediaBrowser.Model.Entities; @@ -17,6 +18,21 @@ namespace MediaBrowser.Controller.Providers.TV /// </summary> class RemoteSeasonProvider : BaseMetadataProvider { + /// <summary> + /// Gets the HTTP client. + /// </summary> + /// <value>The HTTP client.</value> + protected IHttpClient HttpClient { get; private set; } + + public RemoteSeasonProvider(IHttpClient httpClient) + : base() + { + if (httpClient == null) + { + throw new ArgumentNullException("httpClient"); + } + HttpClient = httpClient; + } /// <summary> /// Supportses the specified item. @@ -82,7 +98,7 @@ namespace MediaBrowser.Controller.Providers.TV protected override async Task<bool> FetchAsyncInternal(BaseItem item, bool force, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); - + var season = (Season)item; if (!HasLocalMeta(item)) @@ -135,7 +151,7 @@ namespace MediaBrowser.Controller.Providers.TV try { - using (var imgs = await Kernel.Instance.HttpManager.Get(url, Kernel.Instance.ResourcePools.TvDb, cancellationToken).ConfigureAwait(false)) + using (var imgs = await HttpClient.Get(url, Kernel.Instance.ResourcePools.TvDb, cancellationToken).ConfigureAwait(false)) { images.Load(imgs); } diff --git a/MediaBrowser.Controller/Providers/TV/RemoteSeriesProvider.cs b/MediaBrowser.Controller/Providers/TV/RemoteSeriesProvider.cs index b8941dbba..c05e9c5e6 100644 --- a/MediaBrowser.Controller/Providers/TV/RemoteSeriesProvider.cs +++ b/MediaBrowser.Controller/Providers/TV/RemoteSeriesProvider.cs @@ -1,4 +1,5 @@ using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.Net; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Extensions; @@ -21,6 +22,21 @@ namespace MediaBrowser.Controller.Providers.TV /// </summary> class RemoteSeriesProvider : BaseMetadataProvider { + /// <summary> + /// Gets the HTTP client. + /// </summary> + /// <value>The HTTP client.</value> + protected IHttpClient HttpClient { get; private set; } + + public RemoteSeriesProvider(IHttpClient httpClient) + : base() + { + if (httpClient == null) + { + throw new ArgumentNullException("httpClient"); + } + HttpClient = httpClient; + } /// <summary> /// The root URL @@ -153,7 +169,7 @@ namespace MediaBrowser.Controller.Providers.TV try { - using (var xml = await Kernel.Instance.HttpManager.Get(url, Kernel.Instance.ResourcePools.TvDb, cancellationToken).ConfigureAwait(false)) + using (var xml = await HttpClient.Get(url, Kernel.Instance.ResourcePools.TvDb, cancellationToken).ConfigureAwait(false)) { doc.Load(xml); } @@ -232,7 +248,7 @@ namespace MediaBrowser.Controller.Providers.TV try { - using (var actors = await Kernel.Instance.HttpManager.Get(urlActors, Kernel.Instance.ResourcePools.TvDb, cancellationToken).ConfigureAwait(false)) + using (var actors = await HttpClient.Get(urlActors, Kernel.Instance.ResourcePools.TvDb, cancellationToken).ConfigureAwait(false)) { docActors.Load(actors); } @@ -299,7 +315,7 @@ namespace MediaBrowser.Controller.Providers.TV try { - using (var imgs = await Kernel.Instance.HttpManager.Get(url, Kernel.Instance.ResourcePools.TvDb, cancellationToken).ConfigureAwait(false)) + using (var imgs = await HttpClient.Get(url, Kernel.Instance.ResourcePools.TvDb, cancellationToken).ConfigureAwait(false)) { images.Load(imgs); } @@ -446,7 +462,7 @@ namespace MediaBrowser.Controller.Providers.TV try { - using (var results = await Kernel.Instance.HttpManager.Get(url, Kernel.Instance.ResourcePools.TvDb, cancellationToken).ConfigureAwait(false)) + using (var results = await HttpClient.Get(url, Kernel.Instance.ResourcePools.TvDb, cancellationToken).ConfigureAwait(false)) { doc.Load(results); } diff --git a/MediaBrowser.Controller/Updates/InstallationManager.cs b/MediaBrowser.Controller/Updates/InstallationManager.cs index af544dd51..15d626b2f 100644 --- a/MediaBrowser.Controller/Updates/InstallationManager.cs +++ b/MediaBrowser.Controller/Updates/InstallationManager.cs @@ -114,15 +114,22 @@ namespace MediaBrowser.Controller.Updates protected IJsonSerializer JsonSerializer { get; private set; } /// <summary> + /// Gets the HTTP client. + /// </summary> + /// <value>The HTTP client.</value> + protected IHttpClient HttpClient { get; private set; } + + /// <summary> /// Initializes a new instance of the <see cref="InstallationManager" /> class. /// </summary> /// <param name="kernel">The kernel.</param> + /// <param name="httpClient">The HTTP client.</param> /// <param name="zipClient">The zip client.</param> /// <param name="networkManager">The network manager.</param> - /// <param name="jsonSerializer"></param> + /// <param name="jsonSerializer">The json serializer.</param> /// <param name="logger">The logger.</param> /// <exception cref="System.ArgumentNullException">zipClient</exception> - public InstallationManager(Kernel kernel, IZipClient zipClient, INetworkManager networkManager, IJsonSerializer jsonSerializer, ILogger logger) + public InstallationManager(Kernel kernel, IHttpClient httpClient, IZipClient zipClient, INetworkManager networkManager, IJsonSerializer jsonSerializer, ILogger logger) : base(kernel) { if (zipClient == null) @@ -141,9 +148,13 @@ namespace MediaBrowser.Controller.Updates { throw new ArgumentNullException("jsonSerializer"); } + if (httpClient == null) + { + throw new ArgumentNullException("httpClient"); + } JsonSerializer = jsonSerializer; - + HttpClient = httpClient; _networkManager = networkManager; _logger = logger; ZipClient = zipClient; @@ -162,7 +173,7 @@ namespace MediaBrowser.Controller.Updates { var data = new Dictionary<string, string> { { "key", Kernel.PluginSecurityManager.SupporterKey }, { "mac", _networkManager.GetMacAddress() } }; - using (var json = await Kernel.HttpManager.Post(Controller.Kernel.MBAdminUrl + "service/package/retrieveall", data, Kernel.ResourcePools.Mb, cancellationToken).ConfigureAwait(false)) + using (var json = await HttpClient.Post(Controller.Kernel.MBAdminUrl + "service/package/retrieveall", data, Kernel.ResourcePools.Mb, cancellationToken).ConfigureAwait(false)) { cancellationToken.ThrowIfCancellationRequested(); @@ -276,7 +287,7 @@ namespace MediaBrowser.Controller.Updates /// <returns>Task{IEnumerable{PackageVersionInfo}}.</returns> public async Task<IEnumerable<PackageVersionInfo>> GetAvailablePluginUpdates(bool withAutoUpdateEnabled, CancellationToken cancellationToken) { - var catalog = await Kernel.InstallationManager.GetAvailablePackages(cancellationToken).ConfigureAwait(false); + var catalog = await GetAvailablePackages(cancellationToken).ConfigureAwait(false); var plugins = Kernel.Plugins; @@ -288,7 +299,7 @@ namespace MediaBrowser.Controller.Updates // Figure out what needs to be installed return plugins.Select(p => { - var latestPluginInfo = Kernel.InstallationManager.GetLatestCompatibleVersion(catalog, p.Name, p.Configuration.UpdateClass); + var latestPluginInfo = GetLatestCompatibleVersion(catalog, p.Name, p.Configuration.UpdateClass); return latestPluginInfo != null && latestPluginInfo.version > p.Version ? latestPluginInfo : null; @@ -414,7 +425,7 @@ namespace MediaBrowser.Controller.Updates var target = isArchive ? Kernel.ApplicationPaths.ProgramDataPath : Path.Combine(Kernel.ApplicationPaths.PluginsPath, package.targetFilename); // Download to temporary file so that, if interrupted, it won't destroy the existing installation - var tempFile = await Kernel.HttpManager.FetchToTempFile(package.sourceUrl, Kernel.ResourcePools.Mb, cancellationToken, progress).ConfigureAwait(false); + var tempFile = await HttpClient.GetTempFile(package.sourceUrl, Kernel.ResourcePools.Mb, cancellationToken, progress).ConfigureAwait(false); cancellationToken.ThrowIfCancellationRequested(); |
