aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api')
-rw-r--r--MediaBrowser.Api/Library/FileOrganizationService.cs55
-rw-r--r--MediaBrowser.Api/Playback/BaseStreamingService.cs4
-rw-r--r--MediaBrowser.Api/Playback/StreamState.cs2
-rw-r--r--MediaBrowser.Api/UserLibrary/ItemsService.cs23
4 files changed, 70 insertions, 14 deletions
diff --git a/MediaBrowser.Api/Library/FileOrganizationService.cs b/MediaBrowser.Api/Library/FileOrganizationService.cs
index 1244a16f1b..44fad6a859 100644
--- a/MediaBrowser.Api/Library/FileOrganizationService.cs
+++ b/MediaBrowser.Api/Library/FileOrganizationService.cs
@@ -25,9 +25,15 @@ namespace MediaBrowser.Api.Library
public int? Limit { get; set; }
}
+ [Route("/Library/FileOrganizations", "DELETE")]
+ [Api(Description = "Clears the activity log")]
+ public class ClearOrganizationLog : IReturnVoid
+ {
+ }
+
[Route("/Library/FileOrganizations/{Id}/File", "DELETE")]
[Api(Description = "Deletes the original file of a organizer result")]
- public class DeleteOriginalFile : IReturn<QueryResult<FileOrganizationResult>>
+ public class DeleteOriginalFile : IReturnVoid
{
/// <summary>
/// Gets or sets the id.
@@ -48,7 +54,30 @@ namespace MediaBrowser.Api.Library
[ApiMember(Name = "Id", Description = "Result Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
public string Id { get; set; }
}
-
+
+ [Route("/Library/FileOrganizations/{Id}/Episode/Organize", "POST")]
+ [Api(Description = "Performs an organization")]
+ public class OrganizeEpisode
+ {
+ [ApiMember(Name = "Id", Description = "Result Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
+ public string Id { get; set; }
+
+ [ApiMember(Name = "SeriesId", Description = "Series Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
+ public string SeriesId { get; set; }
+
+ [ApiMember(Name = "SeasonNumber", IsRequired = true, DataType = "int", ParameterType = "query", Verb = "POST")]
+ public int SeasonNumber { get; set; }
+
+ [ApiMember(Name = "EpisodeNumber", IsRequired = true, DataType = "int", ParameterType = "query", Verb = "POST")]
+ public int EpisodeNumber { get; set; }
+
+ [ApiMember(Name = "EndingEpisodeNumber", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "POST")]
+ public int? EndingEpisodeNumber { get; set; }
+
+ [ApiMember(Name = "RememberCorrection", Description = "Whether or not to apply the same correction to future episodes of the same series.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "POST")]
+ public bool RememberCorrection { get; set; }
+ }
+
public class FileOrganizationService : BaseApiService
{
private readonly IFileOrganizationService _iFileOrganizationService;
@@ -76,11 +105,33 @@ namespace MediaBrowser.Api.Library
Task.WaitAll(task);
}
+ public void Delete(ClearOrganizationLog request)
+ {
+ var task = _iFileOrganizationService.ClearLog();
+
+ Task.WaitAll(task);
+ }
+
public void Post(PerformOrganization request)
{
var task = _iFileOrganizationService.PerformOrganization(request.Id);
Task.WaitAll(task);
}
+
+ public void Post(OrganizeEpisode request)
+ {
+ var task = _iFileOrganizationService.PerformEpisodeOrganization(new EpisodeFileOrganizationRequest
+ {
+ EndingEpisodeNumber = request.EndingEpisodeNumber,
+ EpisodeNumber = request.EpisodeNumber,
+ RememberCorrection = request.RememberCorrection,
+ ResultId = request.Id,
+ SeasonNumber = request.SeasonNumber,
+ SeriesId = request.SeriesId
+ });
+
+ Task.WaitAll(task);
+ }
}
}
diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs
index 3a72ced17a..f872b72748 100644
--- a/MediaBrowser.Api/Playback/BaseStreamingService.cs
+++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs
@@ -1062,7 +1062,6 @@ namespace MediaBrowser.Api.Playback
state.ReadInputAtNativeFramerate = recording.RecordingInfo.Status == RecordingStatus.InProgress;
state.AudioSync = 1000;
state.DeInterlace = true;
- state.InputFormat = "mpegts";
}
else if (item is LiveTvChannel)
{
@@ -1091,9 +1090,6 @@ namespace MediaBrowser.Api.Playback
state.ReadInputAtNativeFramerate = true;
state.AudioSync = 1000;
state.DeInterlace = true;
- state.InputFormat = "mpegts";
-
- await Task.Delay(1000, cancellationToken).ConfigureAwait(false);
}
else
{
diff --git a/MediaBrowser.Api/Playback/StreamState.cs b/MediaBrowser.Api/Playback/StreamState.cs
index 1794ebd16f..84cc8ecd36 100644
--- a/MediaBrowser.Api/Playback/StreamState.cs
+++ b/MediaBrowser.Api/Playback/StreamState.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Api.Playback
public VideoStreamRequest VideoRequest
{
- get { return (VideoStreamRequest) Request; }
+ get { return Request as VideoStreamRequest; }
}
/// <summary>
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs
index 278821f52b..16243ba6bb 100644
--- a/MediaBrowser.Api/UserLibrary/ItemsService.cs
+++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs
@@ -20,6 +20,7 @@ namespace MediaBrowser.Api.UserLibrary
/// <summary>
/// Class GetItems
/// </summary>
+ [Route("/Items", "GET")]
[Route("/Users/{UserId}/Items", "GET")]
[Api(Description = "Gets items based on a query.")]
public class GetItems : BaseItemsRequest, IReturn<ItemsResult>
@@ -28,8 +29,8 @@ namespace MediaBrowser.Api.UserLibrary
/// Gets or sets the user id.
/// </summary>
/// <value>The user id.</value>
- [ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
- public Guid UserId { get; set; }
+ [ApiMember(Name = "UserId", Description = "User Id", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "GET")]
+ public Guid? UserId { get; set; }
/// <summary>
/// Limit results to items containing a specific person
@@ -277,7 +278,7 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>Task{ItemsResult}.</returns>
private ItemsResult GetItems(GetItems request)
{
- var user = _userManager.GetUserById(request.UserId);
+ var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null;
var items = GetItemsToSerialize(request, user);
@@ -328,7 +329,11 @@ namespace MediaBrowser.Api.UserLibrary
/// <exception cref="System.InvalidOperationException"></exception>
private IEnumerable<BaseItem> GetItemsToSerialize(GetItems request, User user)
{
- var item = string.IsNullOrEmpty(request.ParentId) ? user.RootFolder : _dtoService.GetItemByDtoId(request.ParentId, user.Id);
+ var userId = user == null ? (Guid?)null : user.Id;
+
+ var item = string.IsNullOrEmpty(request.ParentId) ?
+ user == null ? (BaseItem)_libraryManager.RootFolder : user.RootFolder :
+ _dtoService.GetItemByDtoId(request.ParentId, userId);
// Default list type = children
IEnumerable<BaseItem> items;
@@ -337,16 +342,20 @@ namespace MediaBrowser.Api.UserLibrary
{
var idList = request.Ids.Split(',').ToList();
- items = idList.Select(i => _dtoService.GetItemByDtoId(i, user.Id));
+ items = idList.Select(i => _dtoService.GetItemByDtoId(i, userId));
}
else if (request.Recursive)
{
- items = ((Folder)item).GetRecursiveChildren(user);
+ items = user == null ?
+ ((Folder)item).RecursiveChildren :
+ ((Folder)item).GetRecursiveChildren(user);
}
else
{
- items = ((Folder)item).GetChildren(user, true);
+ items = user == null ?
+ ((Folder)item).Children :
+ ((Folder)item).GetChildren(user, true);
}
if (request.IncludeIndexContainers)