diff --git a/MediaBrowser.Api/MediaBrowser.Api.csproj b/MediaBrowser.Api/MediaBrowser.Api.csproj
index a5720dfad1..706117fc26 100644
--- a/MediaBrowser.Api/MediaBrowser.Api.csproj
+++ b/MediaBrowser.Api/MediaBrowser.Api.csproj
@@ -38,6 +38,18 @@
Always
+
+ False
+ ..\packages\ServiceStack.Common.3.9.70\lib\net35\ServiceStack.Common.dll
+
+
+ False
+ ..\packages\ServiceStack.Common.3.9.70\lib\net35\ServiceStack.Interfaces.dll
+
+
+ False
+ ..\packages\ServiceStack.Text.3.9.70\lib\net35\ServiceStack.Text.dll
+
@@ -47,15 +59,6 @@
..\packages\morelinq.1.0.16006\lib\net35\MoreLinq.dll
-
- ..\packages\ServiceStack.Common.3.9.62\lib\net35\ServiceStack.Common.dll
-
-
- ..\packages\ServiceStack.Common.3.9.62\lib\net35\ServiceStack.Interfaces.dll
-
-
- ..\packages\ServiceStack.Text.3.9.62\lib\net35\ServiceStack.Text.dll
-
diff --git a/MediaBrowser.Api/TvShowsService.cs b/MediaBrowser.Api/TvShowsService.cs
index 23b8efa7bd..9191bfc0c7 100644
--- a/MediaBrowser.Api/TvShowsService.cs
+++ b/MediaBrowser.Api/TvShowsService.cs
@@ -81,6 +81,9 @@ namespace MediaBrowser.Api
[ApiMember(Name = "Season", Description = "Optional filter by season number.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public int? Season { get; set; }
+ [ApiMember(Name = "SeasonId", Description = "Optional. Filter by season id", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public string SeasonId { get; set; }
+
[ApiMember(Name = "IsMissing", Description = "Optional filter by items that are missing episodes or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool? IsMissing { get; set; }
@@ -442,7 +445,25 @@ namespace MediaBrowser.Api
var sortOrder = ItemSortBy.SortName;
- if (request.Season.HasValue)
+ if (!string.IsNullOrEmpty(request.SeasonId))
+ {
+ var season = _libraryManager.GetItemById(request.Id) as Season;
+
+ if (season.IndexNumber.HasValue)
+ {
+ episodes = FilterEpisodesBySeason(episodes, season.IndexNumber.Value, true);
+
+ sortOrder = ItemSortBy.AiredEpisodeOrder;
+ }
+ else
+ {
+ episodes = season.RecursiveChildren.OfType();
+
+ sortOrder = ItemSortBy.SortName;
+ }
+ }
+
+ else if (request.Season.HasValue)
{
episodes = FilterEpisodesBySeason(episodes, request.Season.Value, true);
diff --git a/MediaBrowser.Api/packages.config b/MediaBrowser.Api/packages.config
index c9fec81005..e9a27e8ad8 100644
--- a/MediaBrowser.Api/packages.config
+++ b/MediaBrowser.Api/packages.config
@@ -1,6 +1,6 @@
-
-
+
+
\ No newline at end of file
diff --git a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs
index 8d80185add..8fccb7c2a9 100644
--- a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs
+++ b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs
@@ -27,7 +27,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
///
/// When one request to a host times out, we'll ban all other requests for this period of time, to prevent scans from stalling
///
- private int TimeoutSeconds = 30;
+ private const int TimeoutSeconds = 30;
///
/// The _logger
@@ -42,16 +42,14 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
private readonly IFileSystem _fileSystem;
///
- /// Initializes a new instance of the class.
+ /// Initializes a new instance of the class.
///
/// The app paths.
/// The logger.
- /// The get HTTP client handler.
- ///
- /// appPaths
+ /// The file system.
+ /// appPaths
/// or
- /// logger
- ///
+ /// logger
public HttpClientManager(IApplicationPaths appPaths, ILogger logger, IFileSystem fileSystem)
{
if (appPaths == null)
@@ -143,7 +141,6 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
/// Gets the response internal.
///
/// The options.
- /// The HTTP method.
/// Task{HttpResponseInfo}.
///
///
@@ -490,27 +487,19 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
}
catch (OperationCanceledException ex)
{
- var exception = GetCancellationException(options.Url, options.CancellationToken, ex);
-
- throw exception;
+ throw GetTempFileException(ex, options, tempFile);
}
catch (HttpRequestException ex)
{
- _logger.ErrorException("Error getting response from " + options.Url, ex);
-
- throw new HttpException(ex.Message, ex);
+ throw GetTempFileException(ex, options, tempFile);
}
catch (WebException ex)
{
- _logger.ErrorException("Error getting response from " + options.Url, ex);
-
- throw new HttpException(ex.Message, ex);
+ throw GetTempFileException(ex, options, tempFile);
}
catch (Exception ex)
{
- _logger.ErrorException("Error getting response from " + options.Url, ex);
-
- throw;
+ throw GetTempFileException(ex, options, tempFile);
}
finally
{
@@ -521,65 +510,6 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
}
}
- ///
- /// Gets the message.
- ///
- /// The options.
- /// HttpResponseMessage.
- private HttpRequestMessage GetHttpRequestMessage(HttpRequestOptions options)
- {
- var message = new HttpRequestMessage(HttpMethod.Get, options.Url);
-
- foreach (var pair in options.RequestHeaders.ToList())
- {
- if (!message.Headers.TryAddWithoutValidation(pair.Key, pair.Value))
- {
- _logger.Error("Unable to add request header {0} with value {1}", pair.Key, pair.Value);
- }
- }
-
- return message;
- }
-
- ///
- /// Gets the length of the content.
- ///
- /// The response.
- /// System.Nullable{System.Int64}.
- private long? GetContentLength(HttpResponseMessage response)
- {
- IEnumerable lengthValues = null;
-
- // Seeing some InvalidOperationException here under mono
- try
- {
- response.Headers.TryGetValues("content-length", out lengthValues);
- }
- catch (InvalidOperationException ex)
- {
- _logger.ErrorException("Error accessing response.Headers.TryGetValues Content-Length", ex);
- }
-
- if (lengthValues == null)
- {
- try
- {
- response.Content.Headers.TryGetValues("content-length", out lengthValues);
- }
- catch (InvalidOperationException ex)
- {
- _logger.ErrorException("Error accessing response.Content.Headers.TryGetValues Content-Length", ex);
- }
- }
-
- if (lengthValues == null)
- {
- return null;
- }
-
- return long.Parse(string.Join(string.Empty, lengthValues.ToArray()), UsCulture);
- }
-
private long? GetContentLength(HttpWebResponse response)
{
var length = response.ContentLength;
@@ -616,16 +546,23 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
_logger.ErrorException("Error getting response from " + options.Url, ex);
- var httpRequestException = ex as HttpRequestException;
-
// Cleanup
DeleteTempFile(tempFile);
+ var httpRequestException = ex as HttpRequestException;
+
if (httpRequestException != null)
{
return new HttpException(ex.Message, ex);
}
+ var webException = ex as WebException;
+
+ if (webException != null)
+ {
+ return new HttpException(ex.Message, ex);
+ }
+
return ex;
}
@@ -711,19 +648,6 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
return exception;
}
- ///
- /// Ensures the success status code.
- ///
- /// The response.
- ///
- private void EnsureSuccessStatusCode(HttpResponseMessage response)
- {
- if (!response.IsSuccessStatusCode)
- {
- throw new HttpException(response.ReasonPhrase) { StatusCode = response.StatusCode };
- }
- }
-
private void EnsureSuccessStatusCode(HttpWebResponse response)
{
var statusCode = response.StatusCode;
diff --git a/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj b/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj
index 9e48f3b3e9..9487855756 100644
--- a/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj
+++ b/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj
@@ -41,6 +41,10 @@
False
..\packages\NLog.2.1.0\lib\net45\NLog.dll
+
+ False
+ ..\packages\ServiceStack.Text.3.9.70\lib\net35\ServiceStack.Text.dll
+
..\packages\sharpcompress.0.10.1.3\lib\net40\SharpCompress.dll
@@ -55,9 +59,6 @@
-
- ..\packages\ServiceStack.Text.3.9.62\lib\net35\ServiceStack.Text.dll
-
diff --git a/MediaBrowser.Common.Implementations/Serialization/JsonSerializer.cs b/MediaBrowser.Common.Implementations/Serialization/JsonSerializer.cs
index 4a6b9255c1..3ff9560405 100644
--- a/MediaBrowser.Common.Implementations/Serialization/JsonSerializer.cs
+++ b/MediaBrowser.Common.Implementations/Serialization/JsonSerializer.cs
@@ -169,6 +169,8 @@ namespace MediaBrowser.Common.Implementations.Serialization
ServiceStack.Text.JsConfig.DateHandler = ServiceStack.Text.JsonDateHandler.ISO8601;
ServiceStack.Text.JsConfig.ExcludeTypeInfo = true;
ServiceStack.Text.JsConfig.IncludeNullValues = false;
+ ServiceStack.Text.JsConfig.AlwaysUseUtc = true;
+ ServiceStack.Text.JsConfig.AssumeUtc = true;
}
///
diff --git a/MediaBrowser.Common.Implementations/packages.config b/MediaBrowser.Common.Implementations/packages.config
index f2fe488309..269ac0e561 100644
--- a/MediaBrowser.Common.Implementations/packages.config
+++ b/MediaBrowser.Common.Implementations/packages.config
@@ -1,7 +1,7 @@
-
+
\ No newline at end of file
diff --git a/MediaBrowser.Common/MediaBrowser.Common.csproj b/MediaBrowser.Common/MediaBrowser.Common.csproj
index f4d759a4d1..a9499dedda 100644
--- a/MediaBrowser.Common/MediaBrowser.Common.csproj
+++ b/MediaBrowser.Common/MediaBrowser.Common.csproj
@@ -35,18 +35,21 @@
4
-
-
-
-
- ..\packages\ServiceStack.Common.3.9.62\lib\net35\ServiceStack.Common.dll
+
+ False
+ ..\packages\ServiceStack.Common.3.9.70\lib\net35\ServiceStack.Common.dll
-
- ..\packages\ServiceStack.Common.3.9.62\lib\net35\ServiceStack.Interfaces.dll
+
+ False
+ ..\packages\ServiceStack.Common.3.9.70\lib\net35\ServiceStack.Interfaces.dll
-
- ..\packages\ServiceStack.Text.3.9.62\lib\net35\ServiceStack.Text.dll
+
+ False
+ ..\packages\ServiceStack.Text.3.9.70\lib\net35\ServiceStack.Text.dll
+
+
+
diff --git a/MediaBrowser.Common/packages.config b/MediaBrowser.Common/packages.config
index 6969b43c54..7411e313cd 100644
--- a/MediaBrowser.Common/packages.config
+++ b/MediaBrowser.Common/packages.config
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/MediaBrowser.Model/Querying/EpisodeQuery.cs b/MediaBrowser.Model/Querying/EpisodeQuery.cs
index 56c50da7f7..589b46433a 100644
--- a/MediaBrowser.Model/Querying/EpisodeQuery.cs
+++ b/MediaBrowser.Model/Querying/EpisodeQuery.cs
@@ -5,6 +5,8 @@ namespace MediaBrowser.Model.Querying
{
public string UserId { get; set; }
+ public string SeasonId { get; set; }
+
public string SeriesId { get; set; }
public bool? IsMissing { get; set; }
diff --git a/MediaBrowser.Model/System/SystemInfo.cs b/MediaBrowser.Model/System/SystemInfo.cs
index 9491139dbc..6a17ad133a 100644
--- a/MediaBrowser.Model/System/SystemInfo.cs
+++ b/MediaBrowser.Model/System/SystemInfo.cs
@@ -92,6 +92,18 @@ namespace MediaBrowser.Model.System
/// The program data path.
public string ProgramDataPath { get; set; }
+ ///
+ /// Gets or sets the items by name path.
+ ///
+ /// The items by name path.
+ public string ItemsByNamePath { get; set; }
+
+ ///
+ /// Gets or sets the log path.
+ ///
+ /// The log path.
+ public string LogPath { get; set; }
+
///
/// Gets or sets the HTTP server port number.
///
diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
index f5ade2516c..2d32811d33 100644
--- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
+++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
@@ -41,8 +41,29 @@
False
..\packages\MediaBrowser.BdInfo.1.0.0.5\lib\net20\BDInfo.dll
-
- ..\packages\ServiceStack.OrmLite.Sqlite32.3.9.63\lib\net40\ServiceStack.OrmLite.SqliteNET.dll
+
+ False
+ ..\packages\ServiceStack.3.9.70\lib\net35\ServiceStack.dll
+
+
+ False
+ ..\packages\ServiceStack.Api.Swagger.3.9.70\lib\net35\ServiceStack.Api.Swagger.dll
+
+
+ False
+ ..\packages\ServiceStack.Common.3.9.70\lib\net35\ServiceStack.Common.dll
+
+
+ False
+ ..\packages\ServiceStack.Common.3.9.70\lib\net35\ServiceStack.Interfaces.dll
+
+
+ False
+ ..\packages\ServiceStack.3.9.70\lib\net35\ServiceStack.ServiceInterface.dll
+
+
+ False
+ ..\packages\ServiceStack.Text.3.9.70\lib\net35\ServiceStack.Text.dll
@@ -72,39 +93,12 @@
..\packages\morelinq.1.0.16006\lib\net35\MoreLinq.dll
-
- ..\packages\ServiceStack.3.9.62\lib\net35\ServiceStack.dll
-
-
- ..\packages\ServiceStack.Api.Swagger.3.9.59\lib\net35\ServiceStack.Api.Swagger.dll
-
-
- ..\packages\ServiceStack.Common.3.9.62\lib\net35\ServiceStack.Common.dll
-
-
- ..\packages\ServiceStack.Common.3.9.62\lib\net35\ServiceStack.Interfaces.dll
-
..\packages\ServiceStack.OrmLite.SqlServer.3.9.43\lib\ServiceStack.OrmLite.SqlServer.dll
..\packages\ServiceStack.Redis.3.9.43\lib\net35\ServiceStack.Redis.dll
-
- ..\packages\ServiceStack.3.9.62\lib\net35\ServiceStack.ServiceInterface.dll
-
-
- ..\packages\ServiceStack.Text.3.9.62\lib\net35\ServiceStack.Text.dll
-
-
- ..\packages\ServiceStack.OrmLite.Sqlite.Mono.3.9.64\lib\net35\Mono.Data.Sqlite.dll
-
-
- ..\packages\ServiceStack.OrmLite.Sqlite.Mono.3.9.64\lib\net35\ServiceStack.OrmLite.dll
-
-
- ..\packages\ServiceStack.OrmLite.Sqlite.Mono.3.9.64\lib\net35\ServiceStack.OrmLite.Sqlite.dll
-
@@ -268,7 +262,6 @@
-
PreserveNewest
@@ -287,9 +280,6 @@
PreserveNewest
-
- PreserveNewest
-
PreserveNewest
@@ -323,6 +313,10 @@
PreserveNewest
+
+
+ PreserveNewest
+
diff --git a/MediaBrowser.Server.Implementations/packages.config b/MediaBrowser.Server.Implementations/packages.config
index eeeedfe362..d5abe58caf 100644
--- a/MediaBrowser.Server.Implementations/packages.config
+++ b/MediaBrowser.Server.Implementations/packages.config
@@ -6,13 +6,11 @@
-
-
-
-
-
+
+
+
-
+
\ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/swagger-ui/index.html b/MediaBrowser.Server.Implementations/swagger-ui/index.html
index 0fcc069596..49f983a723 100644
--- a/MediaBrowser.Server.Implementations/swagger-ui/index.html
+++ b/MediaBrowser.Server.Implementations/swagger-ui/index.html
@@ -20,7 +20,7 @@
$(function () {
window.swaggerUi = new SwaggerUi({
discoveryUrl: "../resources",
- apiKey:"special-key",
+ apiKey: "special-key",
dom_id:"swagger-ui-container",
supportHeaderParams: false,
supportedSubmitMethods: ['get', 'post', 'put'],
diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs
index be865881af..d2d700839e 100644
--- a/MediaBrowser.ServerApplication/ApplicationHost.cs
+++ b/MediaBrowser.ServerApplication/ApplicationHost.cs
@@ -609,6 +609,8 @@ namespace MediaBrowser.ServerApplication
CompletedInstallations = InstallationManager.CompletedInstallations.ToList(),
Id = _systemId,
ProgramDataPath = ApplicationPaths.ProgramDataPath,
+ LogPath = ApplicationPaths.LogDirectoryPath,
+ ItemsByNamePath = ApplicationPaths.ItemsByNamePath,
MacAddress = GetMacAddress(),
HttpServerPortNumber = ServerConfigurationManager.Configuration.HttpServerPortNumber,
OperatingSystem = Environment.OSVersion.ToString(),
diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
index 795799ca3e..5f05bc7875 100644
--- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
+++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
@@ -131,17 +131,17 @@
False
..\packages\MediaBrowser.IsoMounting.3.0.65\lib\net45\pfmclrapi.dll
-
+
False
- ..\packages\ServiceStack.3.9.62\lib\net35\ServiceStack.dll
+ ..\packages\ServiceStack.3.9.70\lib\net35\ServiceStack.dll
-
+
False
- ..\packages\ServiceStack.Common.3.9.62\lib\net35\ServiceStack.Common.dll
+ ..\packages\ServiceStack.Common.3.9.70\lib\net35\ServiceStack.Common.dll
-
+
False
- ..\packages\ServiceStack.Common.3.9.62\lib\net35\ServiceStack.Interfaces.dll
+ ..\packages\ServiceStack.Common.3.9.70\lib\net35\ServiceStack.Interfaces.dll
..\packages\ServiceStack.OrmLite.SqlServer.3.9.44\lib\ServiceStack.OrmLite.SqlServer.dll
@@ -149,13 +149,13 @@
..\packages\ServiceStack.Redis.3.9.44\lib\net35\ServiceStack.Redis.dll
-
+
False
- ..\packages\ServiceStack.3.9.62\lib\net35\ServiceStack.ServiceInterface.dll
+ ..\packages\ServiceStack.3.9.70\lib\net35\ServiceStack.ServiceInterface.dll
-
+
False
- ..\packages\ServiceStack.Text.3.9.62\lib\net35\ServiceStack.Text.dll
+ ..\packages\ServiceStack.Text.3.9.70\lib\net35\ServiceStack.Text.dll
False
diff --git a/MediaBrowser.ServerApplication/packages.config b/MediaBrowser.ServerApplication/packages.config
index e01ca1f672..5d7c3265f3 100644
--- a/MediaBrowser.ServerApplication/packages.config
+++ b/MediaBrowser.ServerApplication/packages.config
@@ -3,10 +3,10 @@
-
-
+
+
-
+
\ No newline at end of file
diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
index 73b281d9a4..d36413fc2b 100644
--- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
+++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
@@ -37,21 +37,24 @@
Always
+
+ False
+ ..\packages\ServiceStack.Common.3.9.70\lib\net35\ServiceStack.Common.dll
+
+
+ False
+ ..\packages\ServiceStack.Common.3.9.70\lib\net35\ServiceStack.Interfaces.dll
+
+
+ False
+ ..\packages\ServiceStack.Text.3.9.70\lib\net35\ServiceStack.Text.dll
+
-
- ..\packages\ServiceStack.Common.3.9.62\lib\net35\ServiceStack.Common.dll
-
-
- ..\packages\ServiceStack.Common.3.9.62\lib\net35\ServiceStack.Interfaces.dll
-
-
- ..\packages\ServiceStack.Text.3.9.62\lib\net35\ServiceStack.Text.dll
-
diff --git a/MediaBrowser.WebDashboard/packages.config b/MediaBrowser.WebDashboard/packages.config
index a839ece186..4fa4e5a9ec 100644
--- a/MediaBrowser.WebDashboard/packages.config
+++ b/MediaBrowser.WebDashboard/packages.config
@@ -1,6 +1,6 @@
-
-
+
+
\ No newline at end of file
diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec
index 17311530fa..150b081dc4 100644
--- a/Nuget/MediaBrowser.Common.Internal.nuspec
+++ b/Nuget/MediaBrowser.Common.Internal.nuspec
@@ -2,7 +2,7 @@
MediaBrowser.Common.Internal
- 3.0.254
+ 3.0.255
MediaBrowser.Common.Internal
Luke
ebr,Luke,scottisafool
@@ -12,7 +12,7 @@
Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption.
Copyright © Media Browser 2013
-
+
diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec
index e95a638ab8..c28fa7922b 100644
--- a/Nuget/MediaBrowser.Common.nuspec
+++ b/Nuget/MediaBrowser.Common.nuspec
@@ -2,7 +2,7 @@
MediaBrowser.Common
- 3.0.254
+ 3.0.255
MediaBrowser.Common
Media Browser Team
ebr,Luke,scottisafool
diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec
index 38bb37530e..32f1da5365 100644
--- a/Nuget/MediaBrowser.Server.Core.nuspec
+++ b/Nuget/MediaBrowser.Server.Core.nuspec
@@ -2,7 +2,7 @@
MediaBrowser.Server.Core
- 3.0.254
+ 3.0.255
Media Browser.Server.Core
Media Browser Team
ebr,Luke,scottisafool
@@ -12,7 +12,7 @@
Contains core components required to build plugins for Media Browser Server.
Copyright © Media Browser 2013
-
+