aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTechywarrior <techywarrior@gmail.com>2013-05-03 22:03:07 -0700
committerTechywarrior <techywarrior@gmail.com>2013-05-03 22:03:07 -0700
commit061a0c6f5546b7a0ffd429dd19560d35ca2cf5c6 (patch)
treea023efeb4f40a8be77be1f55e033172cf777ca8b
parent0eed82c5049ce01b1907db987dc6f97f3d636e21 (diff)
parent4279ed529d625b0d5265a90932fbdc10fce42830 (diff)
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
-rw-r--r--MediaBrowser.Api/UserLibrary/PersonsService.cs2
-rw-r--r--MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs106
-rw-r--r--MediaBrowser.Common/Net/HttpRequestOptions.cs6
-rw-r--r--MediaBrowser.Common/Net/IHttpClient.cs9
-rw-r--r--MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs93
-rw-r--r--MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs27
-rw-r--r--MediaBrowser.Model/Dto/ItemByNameCounts.cs6
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>