CollectionService.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using MediaBrowser.Controller.Collections;
  2. using ServiceStack;
  3. using System;
  4. using System.Linq;
  5. using System.Threading.Tasks;
  6. namespace MediaBrowser.Api.Movies
  7. {
  8. [Route("/Collections", "POST", Summary = "Creates a new collection")]
  9. public class CreateCollection : IReturnVoid
  10. {
  11. [ApiMember(Name = "IsLocked", Description = "Whether or not to lock the new collection.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "POST")]
  12. public bool IsLocked { get; set; }
  13. [ApiMember(Name = "Name", Description = "The name of the new collection.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
  14. public string Name { get; set; }
  15. [ApiMember(Name = "ParentId", Description = "Optional - create the collection within a specific folder", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
  16. public Guid? ParentId { get; set; }
  17. }
  18. [Route("/Collections/{Id}/Items", "POST", Summary = "Adds items to a collection")]
  19. public class AddToCollection : IReturnVoid
  20. {
  21. [ApiMember(Name = "Ids", Description = "Item id, comma delimited", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
  22. public string Ids { get; set; }
  23. [ApiMember(Name = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
  24. public Guid Id { get; set; }
  25. }
  26. [Route("/Collections/{Id}/Items", "DELETE", Summary = "Removes items from a collection")]
  27. public class RemoveFromCollection : IReturnVoid
  28. {
  29. [ApiMember(Name = "Ids", Description = "Item id, comma delimited", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
  30. public string Ids { get; set; }
  31. [ApiMember(Name = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")]
  32. public Guid Id { get; set; }
  33. }
  34. public class CollectionService : BaseApiService
  35. {
  36. private readonly ICollectionManager _collectionManager;
  37. public CollectionService(ICollectionManager collectionManager)
  38. {
  39. _collectionManager = collectionManager;
  40. }
  41. public void Post(CreateCollection request)
  42. {
  43. var task = _collectionManager.CreateCollection(new CollectionCreationOptions
  44. {
  45. IsLocked = request.IsLocked,
  46. Name = request.Name,
  47. ParentId = request.ParentId
  48. });
  49. Task.WaitAll(task);
  50. }
  51. public void Post(AddToCollection request)
  52. {
  53. var task = _collectionManager.AddToCollection(request.Id, request.Ids.Split(',').Select(i => new Guid(i)));
  54. Task.WaitAll(task);
  55. }
  56. public void Delete(RemoveFromCollection request)
  57. {
  58. var task = _collectionManager.RemoveFromCollection(request.Id, request.Ids.Split(',').Select(i => new Guid(i)));
  59. Task.WaitAll(task);
  60. }
  61. }
  62. }