aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-08-18 10:20:02 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-08-18 10:20:02 -0400
commit6a2f6782d32603593c669632d825f29fb43f3ea6 (patch)
tree878d7a170deee2737df2a164ae5f00075a862028
parentc58d4a4b2ecb967337b881974da0a6ed235bd53a (diff)
chromecast updates
-rw-r--r--MediaBrowser.Api/Library/LibraryService.cs6
-rw-r--r--MediaBrowser.Api/Music/InstantMixService.cs36
-rw-r--r--MediaBrowser.Api/Sync/SyncService.cs6
-rw-r--r--MediaBrowser.Api/UserLibrary/PlaystateService.cs43
-rw-r--r--MediaBrowser.Api/UserService.cs30
-rw-r--r--MediaBrowser.Api/VideosService.cs18
-rw-r--r--MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs2
7 files changed, 114 insertions, 27 deletions
diff --git a/MediaBrowser.Api/Library/LibraryService.cs b/MediaBrowser.Api/Library/LibraryService.cs
index 0476927d7..10a3117a1 100644
--- a/MediaBrowser.Api/Library/LibraryService.cs
+++ b/MediaBrowser.Api/Library/LibraryService.cs
@@ -466,11 +466,13 @@ namespace MediaBrowser.Api.Library
/// Deletes the specified request.
/// </summary>
/// <param name="request">The request.</param>
- public Task Delete(DeleteItem request)
+ public void Delete(DeleteItem request)
{
var item = _libraryManager.GetItemById(request.Id);
- return _libraryManager.DeleteItem(item);
+ var task = _libraryManager.DeleteItem(item);
+
+ Task.WaitAll(task);
}
/// <summary>
diff --git a/MediaBrowser.Api/Music/InstantMixService.cs b/MediaBrowser.Api/Music/InstantMixService.cs
index ff029d5b5..f34242242 100644
--- a/MediaBrowser.Api/Music/InstantMixService.cs
+++ b/MediaBrowser.Api/Music/InstantMixService.cs
@@ -34,6 +34,20 @@ namespace MediaBrowser.Api.Music
public string Name { get; set; }
}
+ [Route("/Artists/InstantMix", "GET", Summary = "Creates an instant playlist based on a given artist")]
+ public class GetInstantMixFromArtistId : BaseGetSimilarItems
+ {
+ [ApiMember(Name = "Id", Description = "The artist Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public string Id { get; set; }
+ }
+
+ [Route("/MusicGenres/InstantMix", "GET", Summary = "Creates an instant playlist based on a music genre")]
+ public class GetInstantMixFromMusicGenreId : BaseGetSimilarItems
+ {
+ [ApiMember(Name = "Id", Description = "The genre Id", IsRequired = true, DataType = "string", ParameterType = "querypath", Verb = "GET")]
+ public string Id { get; set; }
+ }
+
[Authenticated]
public class InstantMixService : BaseApiService
{
@@ -51,6 +65,28 @@ namespace MediaBrowser.Api.Music
_libraryManager = libraryManager;
}
+ public object Get(GetInstantMixFromArtistId request)
+ {
+ var item = (MusicArtist)_libraryManager.GetItemById(request.Id);
+
+ var user = _userManager.GetUserById(request.UserId.Value);
+
+ var items = _musicManager.GetInstantMixFromArtist(item.Name, user);
+
+ return GetResult(items, user, request);
+ }
+
+ public object Get(GetInstantMixFromMusicGenreId request)
+ {
+ var item = (MusicGenre)_libraryManager.GetItemById(request.Id);
+
+ var user = _userManager.GetUserById(request.UserId.Value);
+
+ var items = _musicManager.GetInstantMixFromGenres(new[] { item.Name }, user);
+
+ return GetResult(items, user, request);
+ }
+
public object Get(GetInstantMixFromSong request)
{
var item = (Audio)_libraryManager.GetItemById(request.Id);
diff --git a/MediaBrowser.Api/Sync/SyncService.cs b/MediaBrowser.Api/Sync/SyncService.cs
index 591b1abad..9cf19d160 100644
--- a/MediaBrowser.Api/Sync/SyncService.cs
+++ b/MediaBrowser.Api/Sync/SyncService.cs
@@ -87,9 +87,11 @@ namespace MediaBrowser.Api.Sync
return ToOptimizedResult(result);
}
- public Task Delete(CancelSyncJob request)
+ public void Delete(CancelSyncJob request)
{
- return _syncManager.CancelJob(request.Id);
+ var task = _syncManager.CancelJob(request.Id);
+
+ Task.WaitAll(task);
}
public async Task<object> Post(CreateSyncJob request)
diff --git a/MediaBrowser.Api/UserLibrary/PlaystateService.cs b/MediaBrowser.Api/UserLibrary/PlaystateService.cs
index 6bcd369d6..2abb76dc8 100644
--- a/MediaBrowser.Api/UserLibrary/PlaystateService.cs
+++ b/MediaBrowser.Api/UserLibrary/PlaystateService.cs
@@ -221,7 +221,14 @@ namespace MediaBrowser.Api.UserLibrary
/// Posts the specified request.
/// </summary>
/// <param name="request">The request.</param>
- public async Task<object> Post(MarkPlayedItem request)
+ public object Post(MarkPlayedItem request)
+ {
+ var result = MarkPlayed(request).Result;
+
+ return ToOptimizedResult(result);
+ }
+
+ private async Task<UserItemDataDto> MarkPlayed(MarkPlayedItem request)
{
var user = _userManager.GetUserById(request.UserId);
@@ -243,18 +250,18 @@ namespace MediaBrowser.Api.UserLibrary
await UpdatePlayedStatus(additionalUser, request.Id, true, datePlayed).ConfigureAwait(false);
}
- return ToOptimizedResult(dto);
+ return dto;
}
/// <summary>
/// Posts the specified request.
/// </summary>
/// <param name="request">The request.</param>
- public Task Post(OnPlaybackStart request)
+ public void Post(OnPlaybackStart request)
{
var queueableMediaTypes = (request.QueueableMediaTypes ?? string.Empty);
- return Post(new ReportPlaybackStart
+ Post(new ReportPlaybackStart
{
CanSeek = request.CanSeek,
ItemId = request.Id,
@@ -265,20 +272,22 @@ namespace MediaBrowser.Api.UserLibrary
});
}
- public Task Post(ReportPlaybackStart request)
+ public void Post(ReportPlaybackStart request)
{
request.SessionId = GetSession().Id;
- return _sessionManager.OnPlaybackStart(request);
+ var task = _sessionManager.OnPlaybackStart(request);
+
+ Task.WaitAll(task);
}
/// <summary>
/// Posts the specified request.
/// </summary>
/// <param name="request">The request.</param>
- public Task Post(OnPlaybackProgress request)
+ public void Post(OnPlaybackProgress request)
{
- return Post(new ReportPlaybackProgress
+ Post(new ReportPlaybackProgress
{
ItemId = request.Id,
PositionTicks = request.PositionTicks,
@@ -291,20 +300,22 @@ namespace MediaBrowser.Api.UserLibrary
});
}
- public Task Post(ReportPlaybackProgress request)
+ public void Post(ReportPlaybackProgress request)
{
request.SessionId = GetSession().Id;
- return _sessionManager.OnPlaybackProgress(request);
+ var task = _sessionManager.OnPlaybackProgress(request);
+
+ Task.WaitAll(task);
}
/// <summary>
/// Posts the specified request.
/// </summary>
/// <param name="request">The request.</param>
- public Task Delete(OnPlaybackStopped request)
+ public void Delete(OnPlaybackStopped request)
{
- return Post(new ReportPlaybackStopped
+ Post(new ReportPlaybackStopped
{
ItemId = request.Id,
PositionTicks = request.PositionTicks,
@@ -312,11 +323,13 @@ namespace MediaBrowser.Api.UserLibrary
});
}
- public Task Post(ReportPlaybackStopped request)
+ public void Post(ReportPlaybackStopped request)
{
request.SessionId = GetSession().Id;
- return _sessionManager.OnPlaybackStopped(request);
+ var task = _sessionManager.OnPlaybackStopped(request);
+
+ Task.WaitAll(task);
}
/// <summary>
@@ -372,4 +385,4 @@ namespace MediaBrowser.Api.UserLibrary
return _userDataRepository.GetUserDataDto(item, user);
}
}
-}
+} \ No newline at end of file
diff --git a/MediaBrowser.Api/UserService.cs b/MediaBrowser.Api/UserService.cs
index 3761cf424..2c504bee1 100644
--- a/MediaBrowser.Api/UserService.cs
+++ b/MediaBrowser.Api/UserService.cs
@@ -242,7 +242,7 @@ namespace MediaBrowser.Api
{
users = users.Where(i => i.Configuration.IsHidden == request.IsHidden.Value);
}
-
+
var result = users
.OrderBy(u => u.Name)
.Select(i => _userManager.GetUserDto(i, Request.RemoteIp))
@@ -274,7 +274,14 @@ namespace MediaBrowser.Api
/// Deletes the specified request.
/// </summary>
/// <param name="request">The request.</param>
- public async Task Delete(DeleteUser request)
+ public void Delete(DeleteUser request)
+ {
+ var task = DeleteAsync(request);
+
+ Task.WaitAll(task);
+ }
+
+ public async Task DeleteAsync(DeleteUser request)
{
var user = _userManager.GetUserById(request.Id);
@@ -347,7 +354,13 @@ namespace MediaBrowser.Api
/// Posts the specified request.
/// </summary>
/// <param name="request">The request.</param>
- public async Task Post(UpdateUserPassword request)
+ public void Post(UpdateUserPassword request)
+ {
+ var task = PostAsync(request);
+ Task.WaitAll(task);
+ }
+
+ public async Task PostAsync(UpdateUserPassword request)
{
var user = _userManager.GetUserById(request.Id);
@@ -372,12 +385,19 @@ namespace MediaBrowser.Api
await _userManager.ChangePassword(user, request.NewPassword).ConfigureAwait(false);
}
}
-
+
/// <summary>
/// Posts the specified request.
/// </summary>
/// <param name="request">The request.</param>
- public async Task Post(UpdateUser request)
+ public void Post(UpdateUser request)
+ {
+ var task = PostAsync(request);
+
+ Task.WaitAll(task);
+ }
+
+ public async Task PostAsync(UpdateUser request)
{
// We need to parse this manually because we told service stack not to with IRequiresRequestStream
// https://code.google.com/p/servicestack/source/browse/trunk/Common/ServiceStack.Text/ServiceStack.Text/Controller/PathInfo.cs
diff --git a/MediaBrowser.Api/VideosService.cs b/MediaBrowser.Api/VideosService.cs
index 5ce1341b0..c964ab458 100644
--- a/MediaBrowser.Api/VideosService.cs
+++ b/MediaBrowser.Api/VideosService.cs
@@ -97,7 +97,14 @@ namespace MediaBrowser.Api
return ToOptimizedSerializedResultUsingCache(result);
}
- public async Task Delete(DeleteAlternateSources request)
+ public void Delete(DeleteAlternateSources request)
+ {
+ var task = DeleteAsync(request);
+
+ Task.WaitAll(task);
+ }
+
+ public async Task DeleteAsync(DeleteAlternateSources request)
{
var video = (Video)_libraryManager.GetItemById(request.Id);
@@ -112,7 +119,14 @@ namespace MediaBrowser.Api
await video.UpdateToRepository(ItemUpdateType.MetadataDownload, CancellationToken.None).ConfigureAwait(false);
}
- public async Task Post(MergeVersions request)
+ public void Post(MergeVersions request)
+ {
+ var task = PostAsync(request);
+
+ Task.WaitAll(task);
+ }
+
+ public async Task PostAsync(MergeVersions request)
{
var items = request.Ids.Split(',')
.Select(i => new Guid(i))
diff --git a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs
index 79638d751..1cec4461b 100644
--- a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs
+++ b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs
@@ -83,7 +83,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
container.Adapter = _containerAdapter;
Plugins.Add(new SwaggerFeature());
- Plugins.Add(new CorsFeature(allowedHeaders: "Content-Type, Authorization, X-MediaBrowser-Token"));
+ Plugins.Add(new CorsFeature(allowedHeaders: "Content-Type, Authorization, Range, X-MediaBrowser-Token"));
//Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] {
// new SessionAuthProvider(_containerAdapter.Resolve<ISessionContext>()),