From 49471e013d17ec53df92267fbb28fa0a11efa492 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Fri, 7 Aug 2020 00:00:46 +0200 Subject: [PATCH] Cleaning up --- .../API/{EpisodesApi.cs => EpisodeApi.cs} | 4 +- Kyoo/Views/API/{GenresAPI.cs => GenreApi.cs} | 4 +- .../API/{LibrariesApi.cs => LibraryApi.cs} | 4 +- .../{LibraryItemsApi.cs => LibraryItemApi.cs} | 4 +- Kyoo/Views/API/ProviderAPI.cs | 27 ------ Kyoo/Views/API/ProviderApi.cs | 24 +++++ Kyoo/Views/API/{ShowsApi.cs => ShowApi.cs} | 4 +- Kyoo/Views/API/StudioAPI.cs | 27 ------ Kyoo/Views/API/StudioApi.cs | 91 +++++++++++++++++++ Kyoo/Views/WebClient | 2 +- 10 files changed, 126 insertions(+), 65 deletions(-) rename Kyoo/Views/API/{EpisodesApi.cs => EpisodeApi.cs} (97%) rename Kyoo/Views/API/{GenresAPI.cs => GenreApi.cs} (94%) rename Kyoo/Views/API/{LibrariesApi.cs => LibraryApi.cs} (97%) rename Kyoo/Views/API/{LibraryItemsApi.cs => LibraryItemApi.cs} (91%) delete mode 100644 Kyoo/Views/API/ProviderAPI.cs create mode 100644 Kyoo/Views/API/ProviderApi.cs rename Kyoo/Views/API/{ShowsApi.cs => ShowApi.cs} (98%) delete mode 100644 Kyoo/Views/API/StudioAPI.cs create mode 100644 Kyoo/Views/API/StudioApi.cs diff --git a/Kyoo/Views/API/EpisodesApi.cs b/Kyoo/Views/API/EpisodeApi.cs similarity index 97% rename from Kyoo/Views/API/EpisodesApi.cs rename to Kyoo/Views/API/EpisodeApi.cs index 8dd9fa92..af29a341 100644 --- a/Kyoo/Views/API/EpisodesApi.cs +++ b/Kyoo/Views/API/EpisodeApi.cs @@ -14,11 +14,11 @@ namespace Kyoo.Api [Route("api/episode")] [Route("api/episodes")] [ApiController] - public class EpisodesApi : CrudApi + public class EpisodeApi : CrudApi { private readonly ILibraryManager _libraryManager; - public EpisodesApi(ILibraryManager libraryManager, IConfiguration configuration) + public EpisodeApi(ILibraryManager libraryManager, IConfiguration configuration) : base(libraryManager.EpisodeRepository, configuration) { _libraryManager = libraryManager; diff --git a/Kyoo/Views/API/GenresAPI.cs b/Kyoo/Views/API/GenreApi.cs similarity index 94% rename from Kyoo/Views/API/GenresAPI.cs rename to Kyoo/Views/API/GenreApi.cs index f0ded1e3..10f15922 100644 --- a/Kyoo/Views/API/GenresAPI.cs +++ b/Kyoo/Views/API/GenreApi.cs @@ -15,11 +15,11 @@ namespace Kyoo.Api [Route("api/genre")] [Route("api/genres")] [ApiController] - public class GenresAPI : CrudApi + public class GenreApi : CrudApi { private readonly ILibraryManager _libraryManager; - public GenresAPI(ILibraryManager libraryManager, IConfiguration config) + public GenreApi(ILibraryManager libraryManager, IConfiguration config) : base(libraryManager.GenreRepository, config) { _libraryManager = libraryManager; diff --git a/Kyoo/Views/API/LibrariesApi.cs b/Kyoo/Views/API/LibraryApi.cs similarity index 97% rename from Kyoo/Views/API/LibrariesApi.cs rename to Kyoo/Views/API/LibraryApi.cs index d7786348..86b00a66 100644 --- a/Kyoo/Views/API/LibrariesApi.cs +++ b/Kyoo/Views/API/LibraryApi.cs @@ -14,12 +14,12 @@ namespace Kyoo.Api [Route("api/library")] [Route("api/libraries")] [ApiController] - public class LibrariesAPI : CrudApi + public class LibraryAPI : CrudApi { private readonly ILibraryManager _libraryManager; private readonly ITaskManager _taskManager; - public LibrariesAPI(ILibraryManager libraryManager, ITaskManager taskManager, IConfiguration configuration) + public LibraryAPI(ILibraryManager libraryManager, ITaskManager taskManager, IConfiguration configuration) : base(libraryManager.LibraryRepository, configuration) { _libraryManager = libraryManager; diff --git a/Kyoo/Views/API/LibraryItemsApi.cs b/Kyoo/Views/API/LibraryItemApi.cs similarity index 91% rename from Kyoo/Views/API/LibraryItemsApi.cs rename to Kyoo/Views/API/LibraryItemApi.cs index 9a32dade..e5918a3c 100644 --- a/Kyoo/Views/API/LibraryItemsApi.cs +++ b/Kyoo/Views/API/LibraryItemApi.cs @@ -15,13 +15,13 @@ namespace Kyoo.Api [Route("api/item")] [Route("api/items")] [ApiController] - public class LibraryItemsApi : ControllerBase + public class LibraryItemApi : ControllerBase { private readonly ILibraryItemRepository _libraryItems; private readonly string _baseURL; - public LibraryItemsApi(ILibraryItemRepository libraryItems, IConfiguration configuration) + public LibraryItemApi(ILibraryItemRepository libraryItems, IConfiguration configuration) { _libraryItems = libraryItems; _baseURL = configuration.GetValue("public_url").TrimEnd('/'); diff --git a/Kyoo/Views/API/ProviderAPI.cs b/Kyoo/Views/API/ProviderAPI.cs deleted file mode 100644 index d1390e2c..00000000 --- a/Kyoo/Views/API/ProviderAPI.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Collections.Generic; -using Kyoo.Models; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; - -namespace Kyoo.Api -{ - [Route("api/provider")] - [Route("api/providers")] - [ApiController] - public class ProviderAPI : ControllerBase - { - private readonly DatabaseContext _database; - - public ProviderAPI(DatabaseContext database) - { - _database = database; - } - - [HttpGet("")] - [Authorize(Policy="Read")] - public ActionResult> Index() - { - return _database.Providers; - } - } -} \ No newline at end of file diff --git a/Kyoo/Views/API/ProviderApi.cs b/Kyoo/Views/API/ProviderApi.cs new file mode 100644 index 00000000..c2798434 --- /dev/null +++ b/Kyoo/Views/API/ProviderApi.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; +using Kyoo.CommonApi; +using Kyoo.Controllers; +using Kyoo.Models; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Configuration; + +namespace Kyoo.Api +{ + [Route("api/provider")] + [Route("api/providers")] + [ApiController] + public class ProviderAPI : CrudApi + { + private readonly ILibraryManager _libraryManager; + + public ProviderAPI(ILibraryManager libraryManager, IConfiguration config) + : base(libraryManager.ProviderRepository, config) + { + _libraryManager = libraryManager; + } + } +} \ No newline at end of file diff --git a/Kyoo/Views/API/ShowsApi.cs b/Kyoo/Views/API/ShowApi.cs similarity index 98% rename from Kyoo/Views/API/ShowsApi.cs rename to Kyoo/Views/API/ShowApi.cs index 9f987e66..e5af30a7 100644 --- a/Kyoo/Views/API/ShowsApi.cs +++ b/Kyoo/Views/API/ShowApi.cs @@ -14,11 +14,11 @@ namespace Kyoo.Api [Route("api/show")] [Route("api/shows")] [ApiController] - public class ShowsApi : CrudApi + public class ShowApi : CrudApi { private readonly ILibraryManager _libraryManager; - public ShowsApi(ILibraryManager libraryManager, IConfiguration configuration) + public ShowApi(ILibraryManager libraryManager, IConfiguration configuration) : base(libraryManager.ShowRepository, configuration) { _libraryManager = libraryManager; diff --git a/Kyoo/Views/API/StudioAPI.cs b/Kyoo/Views/API/StudioAPI.cs deleted file mode 100644 index 88efca86..00000000 --- a/Kyoo/Views/API/StudioAPI.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Kyoo.Controllers; -using Kyoo.Models; -using Microsoft.AspNetCore.Mvc; - -namespace Kyoo.Api -{ - [Route("api/studios")] - [Route("api/studio")] - [ApiController] - public class StudioAPI : ControllerBase - { - private readonly ILibraryManager _libraryManager; - - public StudioAPI(ILibraryManager libraryManager) - { - _libraryManager = libraryManager; - } - - public async Task>> Index() - { - return (await _libraryManager.GetStudios()).ToList(); - } - } -} \ No newline at end of file diff --git a/Kyoo/Views/API/StudioApi.cs b/Kyoo/Views/API/StudioApi.cs new file mode 100644 index 00000000..8c15be4a --- /dev/null +++ b/Kyoo/Views/API/StudioApi.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using Kyoo.CommonApi; +using Kyoo.Controllers; +using Kyoo.Models; +using Kyoo.Models.Exceptions; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Configuration; + +namespace Kyoo.Api +{ + [Route("api/studio")] + [Route("api/studios")] + [ApiController] + public class StudioAPI : CrudApi + { + private readonly ILibraryManager _libraryManager; + + public StudioAPI(ILibraryManager libraryManager, IConfiguration config) + : base(libraryManager.StudioRepository, config) + { + _libraryManager = libraryManager; + } + + [HttpGet("{id:int}/show")] + [HttpGet("{id:int}/shows")] + [Authorize(Policy = "Read")] + public async Task>> GetShows(int id, + [FromQuery] string sortBy, + [FromQuery] int afterID, + [FromQuery] Dictionary where, + [FromQuery] int limit = 20) + { + where.Remove("sortBy"); + where.Remove("limit"); + where.Remove("afterID"); + + try + { + ICollection ressources = await _libraryManager.GetShows( + ApiHelper.ParseWhere(where, x => x.StudioID == id), + new Sort(sortBy), + new Pagination(limit, afterID)); + + return Page(ressources, limit); + } + catch (ItemNotFound) + { + return NotFound(); + } + catch (ArgumentException ex) + { + return BadRequest(new {Error = ex.Message}); + } + } + + [HttpGet("{slug}/show")] + [HttpGet("{slug}/shows")] + [Authorize(Policy = "Read")] + public async Task>> GetShows(string slug, + [FromQuery] string sortBy, + [FromQuery] int afterID, + [FromQuery] Dictionary where, + [FromQuery] int limit = 20) + { + where.Remove("sortBy"); + where.Remove("limit"); + where.Remove("afterID"); + + try + { + ICollection ressources = await _libraryManager.GetShows( + ApiHelper.ParseWhere(where, x => x.Studio.Slug == slug), + new Sort(sortBy), + new Pagination(limit, afterID)); + + return Page(ressources, limit); + } + catch (ItemNotFound) + { + return NotFound(); + } + catch (ArgumentException ex) + { + return BadRequest(new {Error = ex.Message}); + } + } + } +} \ No newline at end of file diff --git a/Kyoo/Views/WebClient b/Kyoo/Views/WebClient index 7e8c7420..9e7e7a10 160000 --- a/Kyoo/Views/WebClient +++ b/Kyoo/Views/WebClient @@ -1 +1 @@ -Subproject commit 7e8c74206356587b06272c5dd7c22fa09420d421 +Subproject commit 9e7e7a1093d85f8e980b8115e0514166701cbd6b