diff options
| author | Techywarrior <techywarrior@gmail.com> | 2013-05-03 22:03:07 -0700 |
|---|---|---|
| committer | Techywarrior <techywarrior@gmail.com> | 2013-05-03 22:03:07 -0700 |
| commit | 061a0c6f5546b7a0ffd429dd19560d35ca2cf5c6 (patch) | |
| tree | a023efeb4f40a8be77be1f55e033172cf777ca8b | |
| parent | 0eed82c5049ce01b1907db987dc6f97f3d636e21 (diff) | |
| parent | 4279ed529d625b0d5265a90932fbdc10fce42830 (diff) | |
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
7 files changed, 193 insertions, 56 deletions
diff --git a/MediaBrowser.Api/UserLibrary/PersonsService.cs b/MediaBrowser.Api/UserLibrary/PersonsService.cs index ee16a986e..837e56384 100644 --- a/MediaBrowser.Api/UserLibrary/PersonsService.cs +++ b/MediaBrowser.Api/UserLibrary/PersonsService.cs @@ -163,7 +163,7 @@ namespace MediaBrowser.Api.UserLibrary AlbumCount = items.OfType<MusicAlbum>().Count(), - EpisodeGuestStarCount = items.OfType<Episode>().Count(i => i.People.Any(p => string.Equals(p.Name, request.Name, StringComparison.OrdinalIgnoreCase) && string.Equals(p.Type, PersonType.GuestStar))) + EpisodeCount = items.OfType<Episode>().Count() }; return ToOptimizedResult(counts); diff --git a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs index dd02bdc09..87922f60a 100644 --- a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs +++ b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs @@ -107,14 +107,13 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager /// <summary> /// Performs a GET request and returns the resulting stream /// </summary> - /// <param name="url">The URL.</param> - /// <param name="resourcePool">The resource pool.</param> - /// <param name="cancellationToken">The cancellation token.</param> + /// <param name="options">The options.</param> /// <returns>Task{Stream}.</returns> + /// <exception cref="HttpException"></exception> /// <exception cref="MediaBrowser.Model.Net.HttpException"></exception> - public async Task<Stream> Get(string url, SemaphoreSlim resourcePool, CancellationToken cancellationToken) + public async Task<Stream> Get(HttpRequestOptions options) { - ValidateParams(url, cancellationToken); + ValidateParams(options.Url, options.CancellationToken); //var urlHash = url.GetMD5().ToString(); //var infoPath = _cacheRepository.GetResourcePath(urlHash + ".js"); @@ -136,9 +135,9 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager // return GetCachedResponse(responsePath); //} - cancellationToken.ThrowIfCancellationRequested(); + options.CancellationToken.ThrowIfCancellationRequested(); - var message = new HttpRequestMessage(HttpMethod.Get, url); + var message = GetHttpRequestMessage(options); //if (cachedInfo != null) //{ @@ -152,22 +151,22 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager // } //} - if (resourcePool != null) + if (options.ResourcePool != null) { - await resourcePool.WaitAsync(cancellationToken).ConfigureAwait(false); + await options.ResourcePool.WaitAsync(options.CancellationToken).ConfigureAwait(false); } - _logger.Info("HttpClientManager.Get url: {0}", url); + _logger.Info("HttpClientManager.Get url: {0}", options.Url); try { - cancellationToken.ThrowIfCancellationRequested(); + options.CancellationToken.ThrowIfCancellationRequested(); - var response = await GetHttpClient(GetHostFromUrl(url)).SendAsync(message, HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var response = await GetHttpClient(GetHostFromUrl(options.Url)).SendAsync(message, HttpCompletionOption.ResponseHeadersRead, options.CancellationToken).ConfigureAwait(false); EnsureSuccessStatusCode(response); - cancellationToken.ThrowIfCancellationRequested(); + options.CancellationToken.ThrowIfCancellationRequested(); //cachedInfo = UpdateInfoCache(cachedInfo, url, infoPath, response); @@ -187,30 +186,59 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager } catch (OperationCanceledException ex) { - throw GetCancellationException(url, cancellationToken, ex); + throw GetCancellationException(options.Url, options.CancellationToken, ex); } catch (HttpRequestException ex) { - _logger.ErrorException("Error getting response from " + url, ex); + _logger.ErrorException("Error getting response from " + options.Url, ex); throw new HttpException(ex.Message, ex); } catch (Exception ex) { - _logger.ErrorException("Error getting response from " + url, ex); + _logger.ErrorException("Error getting response from " + options.Url, ex); throw; } finally { - if (resourcePool != null) + if (options.ResourcePool != null) { - resourcePool.Release(); + options.ResourcePool.Release(); } } } /// <summary> + /// Performs a GET request and returns the resulting stream + /// </summary> + /// <param name="url">The URL.</param> + /// <param name="resourcePool">The resource pool.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>Task{Stream}.</returns> + public Task<Stream> Get(string url, SemaphoreSlim resourcePool, CancellationToken cancellationToken) + { + return Get(new HttpRequestOptions + { + Url = url, + ResourcePool = resourcePool, + CancellationToken = cancellationToken, + }); + } + + /// <summary> + /// Gets the specified URL. + /// </summary> + /// <param name="url">The URL.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>Task{Stream}.</returns> + public Task<Stream> Get(string url, CancellationToken cancellationToken) + { + return Get(url, null, cancellationToken); + } + + + /// <summary> /// Gets the cached response. /// </summary> /// <param name="responsePath">The response path.</param> @@ -393,13 +421,6 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager options.CancellationToken.ThrowIfCancellationRequested(); - var message = new HttpRequestMessage(HttpMethod.Get, options.Url); - - if (!string.IsNullOrEmpty(options.UserAgent)) - { - message.Headers.Add("User-Agent", options.UserAgent); - } - if (options.ResourcePool != null) { await options.ResourcePool.WaitAsync(options.CancellationToken).ConfigureAwait(false); @@ -413,7 +434,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager { options.CancellationToken.ThrowIfCancellationRequested(); - using (var response = await GetHttpClient(GetHostFromUrl(options.Url)).SendAsync(message, HttpCompletionOption.ResponseHeadersRead, options.CancellationToken).ConfigureAwait(false)) + using (var response = await GetHttpClient(GetHostFromUrl(options.Url)).SendAsync(GetHttpRequestMessage(options), HttpCompletionOption.ResponseHeadersRead, options.CancellationToken).ConfigureAwait(false)) { EnsureSuccessStatusCode(response); @@ -464,6 +485,28 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager } /// <summary> + /// Gets the message. + /// </summary> + /// <param name="options">The options.</param> + /// <returns>HttpResponseMessage.</returns> + private HttpRequestMessage GetHttpRequestMessage(HttpRequestOptions options) + { + var message = new HttpRequestMessage(HttpMethod.Get, options.Url); + + if (!string.IsNullOrEmpty(options.UserAgent)) + { + message.Headers.Add("User-Agent", options.UserAgent); + } + + if (!string.IsNullOrEmpty(options.AcceptHeader)) + { + message.Headers.Add("Accept", options.AcceptHeader); + } + + return message; + } + + /// <summary> /// Gets the length of the content. /// </summary> /// <param name="response">The response.</param> @@ -617,17 +660,6 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager } /// <summary> - /// Gets the specified URL. - /// </summary> - /// <param name="url">The URL.</param> - /// <param name="cancellationToken">The cancellation token.</param> - /// <returns>Task{Stream}.</returns> - public Task<Stream> Get(string url, CancellationToken cancellationToken) - { - return Get(url, null, cancellationToken); - } - - /// <summary> /// Posts the specified URL. /// </summary> /// <param name="url">The URL.</param> diff --git a/MediaBrowser.Common/Net/HttpRequestOptions.cs b/MediaBrowser.Common/Net/HttpRequestOptions.cs index 98d02a9f9..77cb8b3df 100644 --- a/MediaBrowser.Common/Net/HttpRequestOptions.cs +++ b/MediaBrowser.Common/Net/HttpRequestOptions.cs @@ -15,6 +15,12 @@ namespace MediaBrowser.Common.Net public string Url { get; set; } /// <summary> + /// Gets or sets the accept header. + /// </summary> + /// <value>The accept header.</value> + public string AcceptHeader { get; set; } + + /// <summary> /// Gets or sets the cancellation token. /// </summary> /// <value>The cancellation token.</value> diff --git a/MediaBrowser.Common/Net/IHttpClient.cs b/MediaBrowser.Common/Net/IHttpClient.cs index 87f9b5d71..2998d1af9 100644 --- a/MediaBrowser.Common/Net/IHttpClient.cs +++ b/MediaBrowser.Common/Net/IHttpClient.cs @@ -28,7 +28,14 @@ namespace MediaBrowser.Common.Net /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{Stream}.</returns> Task<Stream> Get(string url, CancellationToken cancellationToken); - + + /// <summary> + /// Gets the specified options. + /// </summary> + /// <param name="options">The options.</param> + /// <returns>Task{Stream}.</returns> + Task<Stream> Get(HttpRequestOptions options); + /// <summary> /// Performs a POST request /// </summary> diff --git a/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs index 6f096c668..835b36541 100644 --- a/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs +++ b/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs @@ -161,7 +161,14 @@ namespace MediaBrowser.Controller.Providers.Movies { try { - using (var json = await httpClient.Get(String.Format(TmdbConfigUrl, ApiKey), Current.MovieDbResourcePool, CancellationToken.None).ConfigureAwait(false)) + using (var json = await httpClient.Get(new HttpRequestOptions + { + Url = string.Format(TmdbConfigUrl, ApiKey), + CancellationToken = CancellationToken.None, + ResourcePool = Current.MovieDbResourcePool, + AcceptHeader = AcceptHeader + + }).ConfigureAwait(false)) { return jsonSerializer.DeserializeFromStream<TmdbSettingsResult>(json); } @@ -246,7 +253,8 @@ namespace MediaBrowser.Controller.Providers.Movies private const string CastInfo = @"http://api.themoviedb.org/3/movie/{0}/casts?api_key={1}"; private const string ReleaseInfo = @"http://api.themoviedb.org/3/movie/{0}/releases?api_key={1}"; private const string GetImages = @"http://api.themoviedb.org/3/{2}/{0}/images?api_key={1}"; - public static string ApiKey = "f6bd687ffa63cd282b6ff2c6877f2669"; + internal static string ApiKey = "f6bd687ffa63cd282b6ff2c6877f2669"; + internal static string AcceptHeader = "application/json,image/*"; static readonly Regex[] NameMatches = new[] { new Regex(@"(?<name>.*)\((?<year>\d{4})\)"), // matches "My Movie (2001)" and gives us the name and the year @@ -504,7 +512,14 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await HttpClient.Get(url3, MovieDbResourcePool, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(new HttpRequestOptions + { + Url = url3, + CancellationToken = cancellationToken, + ResourcePool = Current.MovieDbResourcePool, + AcceptHeader = AcceptHeader + + }).ConfigureAwait(false)) { searchResult = JsonSerializer.DeserializeFromStream<TmdbMovieSearchResults>(json); } @@ -536,7 +551,14 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (var json = await HttpClient.Get(url3, MovieDbResourcePool, cancellationToken).ConfigureAwait(false)) + using (var json = await HttpClient.Get(new HttpRequestOptions + { + Url = url3, + CancellationToken = cancellationToken, + ResourcePool = Current.MovieDbResourcePool, + AcceptHeader = AcceptHeader + + }).ConfigureAwait(false)) { searchResult = JsonSerializer.DeserializeFromStream<TmdbMovieSearchResults>(json); } @@ -575,7 +597,14 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (var json = await HttpClient.Get(url3, MovieDbResourcePool, cancellationToken).ConfigureAwait(false)) + using (var json = await HttpClient.Get(new HttpRequestOptions + { + Url = url3, + CancellationToken = cancellationToken, + ResourcePool = Current.MovieDbResourcePool, + AcceptHeader = AcceptHeader + + }).ConfigureAwait(false)) { var response = JsonSerializer.DeserializeFromStream<TmdbAltTitleResults>(json); @@ -657,7 +686,14 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await HttpClient.Get(url, MovieDbResourcePool, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(new HttpRequestOptions + { + Url = url, + CancellationToken = cancellationToken, + ResourcePool = Current.MovieDbResourcePool, + AcceptHeader = AcceptHeader + + }).ConfigureAwait(false)) { var movieResult = JsonSerializer.DeserializeFromStream<CompleteMovieData>(json); @@ -758,7 +794,14 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (var json = await HttpClient.Get(url, MovieDbResourcePool, cancellationToken).ConfigureAwait(false)) + using (var json = await HttpClient.Get(new HttpRequestOptions + { + Url = url, + CancellationToken = cancellationToken, + ResourcePool = Current.MovieDbResourcePool, + AcceptHeader = AcceptHeader + + }).ConfigureAwait(false)) { mainResult = JsonSerializer.DeserializeFromStream<CompleteMovieData>(json); } @@ -790,7 +833,14 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await HttpClient.Get(url, MovieDbResourcePool, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(new HttpRequestOptions + { + Url = url, + CancellationToken = cancellationToken, + ResourcePool = Current.MovieDbResourcePool, + AcceptHeader = AcceptHeader + + }).ConfigureAwait(false)) { mainResult = JsonSerializer.DeserializeFromStream<CompleteMovieData>(json); } @@ -826,7 +876,14 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await HttpClient.Get(url, MovieDbResourcePool, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(new HttpRequestOptions + { + Url = url, + CancellationToken = cancellationToken, + ResourcePool = Current.MovieDbResourcePool, + AcceptHeader = AcceptHeader + + }).ConfigureAwait(false)) { cast = JsonSerializer.DeserializeFromStream<TmdbCastResult>(json); } @@ -853,7 +910,14 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await HttpClient.Get(url, MovieDbResourcePool, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(new HttpRequestOptions + { + Url = url, + CancellationToken = cancellationToken, + ResourcePool = Current.MovieDbResourcePool, + AcceptHeader = AcceptHeader + + }).ConfigureAwait(false)) { releases = JsonSerializer.DeserializeFromStream<TmdbReleasesResult>(json); } @@ -882,7 +946,14 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await HttpClient.Get(url, MovieDbResourcePool, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(new HttpRequestOptions + { + Url = url, + CancellationToken = cancellationToken, + ResourcePool = Current.MovieDbResourcePool, + AcceptHeader = AcceptHeader + + }).ConfigureAwait(false)) { images = JsonSerializer.DeserializeFromStream<TmdbImages>(json); } diff --git a/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs b/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs index ac0bf9911..7aae0c0b9 100644 --- a/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs +++ b/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs @@ -163,7 +163,14 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await HttpClient.Get(url, MovieDbProvider.Current.MovieDbResourcePool, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(new HttpRequestOptions + { + Url = url, + CancellationToken = cancellationToken, + ResourcePool = MovieDbProvider.Current.MovieDbResourcePool, + AcceptHeader = MovieDbProvider.AcceptHeader + + }).ConfigureAwait(false)) { searchResult = JsonSerializer.DeserializeFromStream<PersonSearchResults>(json); } @@ -189,7 +196,14 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await HttpClient.Get(url, MovieDbProvider.Current.MovieDbResourcePool, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(new HttpRequestOptions + { + Url = url, + CancellationToken = cancellationToken, + ResourcePool = MovieDbProvider.Current.MovieDbResourcePool, + AcceptHeader = MovieDbProvider.AcceptHeader + + }).ConfigureAwait(false)) { if (json != null) { @@ -267,7 +281,14 @@ namespace MediaBrowser.Controller.Providers.Movies try { - using (Stream json = await HttpClient.Get(url, MovieDbProvider.Current.MovieDbResourcePool, cancellationToken).ConfigureAwait(false)) + using (Stream json = await HttpClient.Get(new HttpRequestOptions + { + Url = url, + CancellationToken = cancellationToken, + ResourcePool = MovieDbProvider.Current.MovieDbResourcePool, + AcceptHeader = MovieDbProvider.AcceptHeader + + }).ConfigureAwait(false)) { if (json != null) { diff --git a/MediaBrowser.Model/Dto/ItemByNameCounts.cs b/MediaBrowser.Model/Dto/ItemByNameCounts.cs index b650eb566..ec8e0e95f 100644 --- a/MediaBrowser.Model/Dto/ItemByNameCounts.cs +++ b/MediaBrowser.Model/Dto/ItemByNameCounts.cs @@ -22,10 +22,10 @@ namespace MediaBrowser.Model.Dto /// <value>The series count.</value> public int SeriesCount { get; set; } /// <summary> - /// Gets or sets the episode guest star count. + /// Gets or sets the episode count. /// </summary> - /// <value>The episode guest star count.</value> - public int EpisodeGuestStarCount { get; set; } + /// <value>The episode count.</value> + public int EpisodeCount { get; set; } /// <summary> /// Gets or sets the game count. /// </summary> |
