mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-07-09 03:04:20 -04:00
API: Documenting the staff's api
This commit is contained in:
parent
f4bac4e670
commit
cd6c589529
@ -318,6 +318,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">Sort information (sort order and sort by)</param>
|
/// <param name="sort">Sort information (sort order and sort by)</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No library exist with the given ID.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<LibraryItem>> GetItemsFromLibrary(int id,
|
Task<ICollection<LibraryItem>> GetItemsFromLibrary(int id,
|
||||||
Expression<Func<LibraryItem, bool>> where = null,
|
Expression<Func<LibraryItem, bool>> where = null,
|
||||||
@ -331,6 +332,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">A sort by method</param>
|
/// <param name="sort">A sort by method</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No library exist with the given ID.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<LibraryItem>> GetItemsFromLibrary(int id,
|
Task<ICollection<LibraryItem>> GetItemsFromLibrary(int id,
|
||||||
[Optional] Expression<Func<LibraryItem, bool>> where,
|
[Optional] Expression<Func<LibraryItem, bool>> where,
|
||||||
@ -345,6 +347,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">Sort information (sort order and sort by)</param>
|
/// <param name="sort">Sort information (sort order and sort by)</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No library exist with the given slug.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<LibraryItem>> GetItemsFromLibrary(string slug,
|
Task<ICollection<LibraryItem>> GetItemsFromLibrary(string slug,
|
||||||
Expression<Func<LibraryItem, bool>> where = null,
|
Expression<Func<LibraryItem, bool>> where = null,
|
||||||
@ -358,6 +361,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">A sort by method</param>
|
/// <param name="sort">A sort by method</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No library exist with the given slug.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<LibraryItem>> GetItemsFromLibrary(string slug,
|
Task<ICollection<LibraryItem>> GetItemsFromLibrary(string slug,
|
||||||
[Optional] Expression<Func<LibraryItem, bool>> where,
|
[Optional] Expression<Func<LibraryItem, bool>> where,
|
||||||
@ -372,6 +376,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">Sort information (sort order and sort by)</param>
|
/// <param name="sort">Sort information (sort order and sort by)</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No <see cref="Show"/> exist with the given ID.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<PeopleRole>> GetPeopleFromShow(int showID,
|
Task<ICollection<PeopleRole>> GetPeopleFromShow(int showID,
|
||||||
Expression<Func<PeopleRole, bool>> where = null,
|
Expression<Func<PeopleRole, bool>> where = null,
|
||||||
@ -385,6 +390,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">A sort by method</param>
|
/// <param name="sort">A sort by method</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No <see cref="Show"/> exist with the given ID.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<PeopleRole>> GetPeopleFromShow(int showID,
|
Task<ICollection<PeopleRole>> GetPeopleFromShow(int showID,
|
||||||
[Optional] Expression<Func<PeopleRole, bool>> where,
|
[Optional] Expression<Func<PeopleRole, bool>> where,
|
||||||
@ -399,6 +405,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">Sort information (sort order and sort by)</param>
|
/// <param name="sort">Sort information (sort order and sort by)</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No <see cref="Show"/> exist with the given slug.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<PeopleRole>> GetPeopleFromShow(string showSlug,
|
Task<ICollection<PeopleRole>> GetPeopleFromShow(string showSlug,
|
||||||
Expression<Func<PeopleRole, bool>> where = null,
|
Expression<Func<PeopleRole, bool>> where = null,
|
||||||
@ -412,6 +419,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">A sort by method</param>
|
/// <param name="sort">A sort by method</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No <see cref="Show"/> exist with the given slug.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<PeopleRole>> GetPeopleFromShow(string showSlug,
|
Task<ICollection<PeopleRole>> GetPeopleFromShow(string showSlug,
|
||||||
[Optional] Expression<Func<PeopleRole, bool>> where,
|
[Optional] Expression<Func<PeopleRole, bool>> where,
|
||||||
@ -426,6 +434,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">Sort information (sort order and sort by)</param>
|
/// <param name="sort">Sort information (sort order and sort by)</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No <see cref="People"/> exist with the given ID.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<PeopleRole>> GetRolesFromPeople(int id,
|
Task<ICollection<PeopleRole>> GetRolesFromPeople(int id,
|
||||||
Expression<Func<PeopleRole, bool>> where = null,
|
Expression<Func<PeopleRole, bool>> where = null,
|
||||||
@ -439,6 +448,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">A sort by method</param>
|
/// <param name="sort">A sort by method</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No <see cref="People"/> exist with the given ID.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<PeopleRole>> GetRolesFromPeople(int id,
|
Task<ICollection<PeopleRole>> GetRolesFromPeople(int id,
|
||||||
[Optional] Expression<Func<PeopleRole, bool>> where,
|
[Optional] Expression<Func<PeopleRole, bool>> where,
|
||||||
@ -453,6 +463,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">Sort information (sort order and sort by)</param>
|
/// <param name="sort">Sort information (sort order and sort by)</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No <see cref="People"/> exist with the given slug.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<PeopleRole>> GetRolesFromPeople(string slug,
|
Task<ICollection<PeopleRole>> GetRolesFromPeople(string slug,
|
||||||
Expression<Func<PeopleRole, bool>> where = null,
|
Expression<Func<PeopleRole, bool>> where = null,
|
||||||
@ -466,6 +477,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">A sort by method</param>
|
/// <param name="sort">A sort by method</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No <see cref="People"/> exist with the given slug.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<PeopleRole>> GetRolesFromPeople(string slug,
|
Task<ICollection<PeopleRole>> GetRolesFromPeople(string slug,
|
||||||
[Optional] Expression<Func<PeopleRole, bool>> where,
|
[Optional] Expression<Func<PeopleRole, bool>> where,
|
||||||
|
@ -345,6 +345,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">Sort information (sort order and sort by)</param>
|
/// <param name="sort">Sort information (sort order and sort by)</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No library exist with the given ID.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
public Task<ICollection<LibraryItem>> GetFromLibrary(int id,
|
public Task<ICollection<LibraryItem>> GetFromLibrary(int id,
|
||||||
Expression<Func<LibraryItem, bool>> where = null,
|
Expression<Func<LibraryItem, bool>> where = null,
|
||||||
@ -358,6 +359,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">A sort by method</param>
|
/// <param name="sort">A sort by method</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No library exist with the given ID.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
public Task<ICollection<LibraryItem>> GetFromLibrary(int id,
|
public Task<ICollection<LibraryItem>> GetFromLibrary(int id,
|
||||||
[Optional] Expression<Func<LibraryItem, bool>> where,
|
[Optional] Expression<Func<LibraryItem, bool>> where,
|
||||||
@ -372,6 +374,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">Sort information (sort order and sort by)</param>
|
/// <param name="sort">Sort information (sort order and sort by)</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No library exist with the given slug.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
public Task<ICollection<LibraryItem>> GetFromLibrary(string slug,
|
public Task<ICollection<LibraryItem>> GetFromLibrary(string slug,
|
||||||
Expression<Func<LibraryItem, bool>> where = null,
|
Expression<Func<LibraryItem, bool>> where = null,
|
||||||
@ -385,6 +388,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">A sort by method</param>
|
/// <param name="sort">A sort by method</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No library exist with the given slug.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
public Task<ICollection<LibraryItem>> GetFromLibrary(string slug,
|
public Task<ICollection<LibraryItem>> GetFromLibrary(string slug,
|
||||||
[Optional] Expression<Func<LibraryItem, bool>> where,
|
[Optional] Expression<Func<LibraryItem, bool>> where,
|
||||||
@ -420,6 +424,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">Sort information (sort order and sort by)</param>
|
/// <param name="sort">Sort information (sort order and sort by)</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No <see cref="Show"/> exist with the given ID.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<PeopleRole>> GetFromShow(int showID,
|
Task<ICollection<PeopleRole>> GetFromShow(int showID,
|
||||||
Expression<Func<PeopleRole, bool>> where = null,
|
Expression<Func<PeopleRole, bool>> where = null,
|
||||||
@ -433,6 +438,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">A sort by method</param>
|
/// <param name="sort">A sort by method</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No <see cref="Show"/> exist with the given ID.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<PeopleRole>> GetFromShow(int showID,
|
Task<ICollection<PeopleRole>> GetFromShow(int showID,
|
||||||
[Optional] Expression<Func<PeopleRole, bool>> where,
|
[Optional] Expression<Func<PeopleRole, bool>> where,
|
||||||
@ -447,6 +453,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">Sort information (sort order and sort by)</param>
|
/// <param name="sort">Sort information (sort order and sort by)</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No <see cref="Show"/> exist with the given slug.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<PeopleRole>> GetFromShow(string showSlug,
|
Task<ICollection<PeopleRole>> GetFromShow(string showSlug,
|
||||||
Expression<Func<PeopleRole, bool>> where = null,
|
Expression<Func<PeopleRole, bool>> where = null,
|
||||||
@ -460,6 +467,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">A sort by method</param>
|
/// <param name="sort">A sort by method</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No <see cref="Show"/> exist with the given slug.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<PeopleRole>> GetFromShow(string showSlug,
|
Task<ICollection<PeopleRole>> GetFromShow(string showSlug,
|
||||||
[Optional] Expression<Func<PeopleRole, bool>> where,
|
[Optional] Expression<Func<PeopleRole, bool>> where,
|
||||||
@ -474,6 +482,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">Sort information (sort order and sort by)</param>
|
/// <param name="sort">Sort information (sort order and sort by)</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No <see cref="People"/> exist with the given ID.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<PeopleRole>> GetFromPeople(int id,
|
Task<ICollection<PeopleRole>> GetFromPeople(int id,
|
||||||
Expression<Func<PeopleRole, bool>> where = null,
|
Expression<Func<PeopleRole, bool>> where = null,
|
||||||
@ -487,6 +496,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">A sort by method</param>
|
/// <param name="sort">A sort by method</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No <see cref="People"/> exist with the given ID.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<PeopleRole>> GetFromPeople(int id,
|
Task<ICollection<PeopleRole>> GetFromPeople(int id,
|
||||||
[Optional] Expression<Func<PeopleRole, bool>> where,
|
[Optional] Expression<Func<PeopleRole, bool>> where,
|
||||||
@ -501,6 +511,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">Sort information (sort order and sort by)</param>
|
/// <param name="sort">Sort information (sort order and sort by)</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No <see cref="People"/> exist with the given slug.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<PeopleRole>> GetFromPeople(string slug,
|
Task<ICollection<PeopleRole>> GetFromPeople(string slug,
|
||||||
Expression<Func<PeopleRole, bool>> where = null,
|
Expression<Func<PeopleRole, bool>> where = null,
|
||||||
@ -514,6 +525,7 @@ namespace Kyoo.Abstractions.Controllers
|
|||||||
/// <param name="where">A filter function</param>
|
/// <param name="where">A filter function</param>
|
||||||
/// <param name="sort">A sort by method</param>
|
/// <param name="sort">A sort by method</param>
|
||||||
/// <param name="limit">How many items to return and where to start</param>
|
/// <param name="limit">How many items to return and where to start</param>
|
||||||
|
/// <exception cref="ItemNotFoundException">No <see cref="People"/> exist with the given slug.</exception>
|
||||||
/// <returns>A list of items that match every filters</returns>
|
/// <returns>A list of items that match every filters</returns>
|
||||||
Task<ICollection<PeopleRole>> GetFromPeople(string slug,
|
Task<ICollection<PeopleRole>> GetFromPeople(string slug,
|
||||||
[Optional] Expression<Func<PeopleRole, bool>> where,
|
[Optional] Expression<Func<PeopleRole, bool>> where,
|
||||||
|
@ -23,6 +23,7 @@ using System.Linq.Expressions;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Kyoo.Abstractions.Controllers;
|
using Kyoo.Abstractions.Controllers;
|
||||||
using Kyoo.Abstractions.Models;
|
using Kyoo.Abstractions.Models;
|
||||||
|
using Kyoo.Abstractions.Models.Exceptions;
|
||||||
using Kyoo.Database;
|
using Kyoo.Database;
|
||||||
using Kyoo.Utils;
|
using Kyoo.Utils;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
@ -159,6 +160,8 @@ namespace Kyoo.Core.Controllers
|
|||||||
where,
|
where,
|
||||||
sort,
|
sort,
|
||||||
limit);
|
limit);
|
||||||
|
if (!people.Any() && await _shows.Value.GetOrDefault(showID) == null)
|
||||||
|
throw new ItemNotFoundException();
|
||||||
foreach (PeopleRole role in people)
|
foreach (PeopleRole role in people)
|
||||||
role.ForPeople = true;
|
role.ForPeople = true;
|
||||||
return people;
|
return people;
|
||||||
@ -179,6 +182,8 @@ namespace Kyoo.Core.Controllers
|
|||||||
where,
|
where,
|
||||||
sort,
|
sort,
|
||||||
limit);
|
limit);
|
||||||
|
if (!people.Any() && await _shows.Value.GetOrDefault(showSlug) == null)
|
||||||
|
throw new ItemNotFoundException();
|
||||||
foreach (PeopleRole role in people)
|
foreach (PeopleRole role in people)
|
||||||
role.ForPeople = true;
|
role.ForPeople = true;
|
||||||
return people;
|
return people;
|
||||||
@ -190,7 +195,7 @@ namespace Kyoo.Core.Controllers
|
|||||||
Sort<PeopleRole> sort = default,
|
Sort<PeopleRole> sort = default,
|
||||||
Pagination limit = default)
|
Pagination limit = default)
|
||||||
{
|
{
|
||||||
return await ApplyFilters(_database.PeopleRoles
|
ICollection<PeopleRole> roles = await ApplyFilters(_database.PeopleRoles
|
||||||
.Where(x => x.PeopleID == id)
|
.Where(x => x.PeopleID == id)
|
||||||
.Include(x => x.Show),
|
.Include(x => x.Show),
|
||||||
y => _database.PeopleRoles.FirstOrDefaultAsync(x => x.ID == y),
|
y => _database.PeopleRoles.FirstOrDefaultAsync(x => x.ID == y),
|
||||||
@ -198,6 +203,9 @@ namespace Kyoo.Core.Controllers
|
|||||||
where,
|
where,
|
||||||
sort,
|
sort,
|
||||||
limit);
|
limit);
|
||||||
|
if (!roles.Any() && await GetOrDefault(id) == null)
|
||||||
|
throw new ItemNotFoundException();
|
||||||
|
return roles;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
@ -206,7 +214,7 @@ namespace Kyoo.Core.Controllers
|
|||||||
Sort<PeopleRole> sort = default,
|
Sort<PeopleRole> sort = default,
|
||||||
Pagination limit = default)
|
Pagination limit = default)
|
||||||
{
|
{
|
||||||
return await ApplyFilters(_database.PeopleRoles
|
ICollection<PeopleRole> roles = await ApplyFilters(_database.PeopleRoles
|
||||||
.Where(x => x.People.Slug == slug)
|
.Where(x => x.People.Slug == slug)
|
||||||
.Include(x => x.Show),
|
.Include(x => x.Show),
|
||||||
id => _database.PeopleRoles.FirstOrDefaultAsync(x => x.ID == id),
|
id => _database.PeopleRoles.FirstOrDefaultAsync(x => x.ID == id),
|
||||||
@ -214,6 +222,9 @@ namespace Kyoo.Core.Controllers
|
|||||||
where,
|
where,
|
||||||
sort,
|
sort,
|
||||||
limit);
|
limit);
|
||||||
|
if (!roles.Any() && await GetOrDefault(slug) == null)
|
||||||
|
throw new ItemNotFoundException();
|
||||||
|
return roles;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
116
src/Kyoo.Core/Views/Metadata/StaffApi.cs
Normal file
116
src/Kyoo.Core/Views/Metadata/StaffApi.cs
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
// Kyoo - A portable and vast media library solution.
|
||||||
|
// Copyright (c) Kyoo.
|
||||||
|
//
|
||||||
|
// See AUTHORS.md and LICENSE file in the project root for full license information.
|
||||||
|
//
|
||||||
|
// Kyoo is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// any later version.
|
||||||
|
//
|
||||||
|
// Kyoo is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with Kyoo. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Kyoo.Abstractions.Controllers;
|
||||||
|
using Kyoo.Abstractions.Models;
|
||||||
|
using Kyoo.Abstractions.Models.Attributes;
|
||||||
|
using Kyoo.Abstractions.Models.Exceptions;
|
||||||
|
using Kyoo.Abstractions.Models.Permissions;
|
||||||
|
using Kyoo.Abstractions.Models.Utils;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using static Kyoo.Abstractions.Models.Utils.Constants;
|
||||||
|
|
||||||
|
namespace Kyoo.Core.Api
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Information about one or multiple staff member.
|
||||||
|
/// </summary>
|
||||||
|
[Route("api/staff")]
|
||||||
|
[Route("api/people", Order = AlternativeRoute)]
|
||||||
|
[ApiController]
|
||||||
|
[ResourceView]
|
||||||
|
[PartialPermission(nameof(StaffApi))]
|
||||||
|
[ApiDefinition("Staff", Group = MetadataGroup)]
|
||||||
|
public class StaffApi : CrudThumbsApi<People>
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The library manager used to modify or retrieve information in the data store.
|
||||||
|
/// </summary>
|
||||||
|
private readonly ILibraryManager _libraryManager;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Create a new <see cref="StaffApi"/>.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="libraryManager">
|
||||||
|
/// The library manager used to modify or retrieve information about the data store.
|
||||||
|
/// </param>
|
||||||
|
/// <param name="files">The file manager used to send images and fonts.</param>
|
||||||
|
/// <param name="thumbs">The thumbnail manager used to retrieve images paths.</param>
|
||||||
|
public StaffApi(ILibraryManager libraryManager,
|
||||||
|
IFileSystem files,
|
||||||
|
IThumbnailsManager thumbs)
|
||||||
|
: base(libraryManager.PeopleRepository, files, thumbs)
|
||||||
|
{
|
||||||
|
_libraryManager = libraryManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get roles
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// List the roles in witch this person has played, written or worked in a way.
|
||||||
|
/// </remarks>
|
||||||
|
/// <param name="identifier">The ID or slug of the person.</param>
|
||||||
|
/// <param name="sortBy">A key to sort roles by.</param>
|
||||||
|
/// <param name="where">An optional list of filters.</param>
|
||||||
|
/// <param name="limit">The number of roles to return.</param>
|
||||||
|
/// <param name="afterID">An optional role's ID to start the query from this specific item.</param>
|
||||||
|
/// <returns>A page of roles.</returns>
|
||||||
|
/// <response code="400">The filters or the sort parameters are invalid.</response>
|
||||||
|
/// <response code="404">No person with the given ID or slug could be found.</response>
|
||||||
|
[HttpGet("{identifier:id}/roles")]
|
||||||
|
[HttpGet("{identifier:id}/role", Order = AlternativeRoute)]
|
||||||
|
[PartialPermission(Kind.Read)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
[ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(RequestError))]
|
||||||
|
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||||
|
public async Task<ActionResult<Page<PeopleRole>>> GetRoles(Identifier identifier,
|
||||||
|
[FromQuery] string sortBy,
|
||||||
|
[FromQuery] Dictionary<string, string> where,
|
||||||
|
[FromQuery] int limit = 20,
|
||||||
|
[FromQuery] int? afterID = null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Expression<Func<PeopleRole, bool>> whereQuery = ApiHelper.ParseWhere<PeopleRole>(where);
|
||||||
|
Sort<PeopleRole> sort = new(sortBy);
|
||||||
|
Pagination pagination = new(limit, afterID);
|
||||||
|
|
||||||
|
ICollection<PeopleRole> resources = await identifier.Match(
|
||||||
|
id => _libraryManager.GetRolesFromPeople(id, whereQuery, sort, pagination),
|
||||||
|
slug => _libraryManager.GetRolesFromPeople(slug, whereQuery, sort, pagination)
|
||||||
|
);
|
||||||
|
|
||||||
|
return Page(resources, limit);
|
||||||
|
}
|
||||||
|
catch (ItemNotFoundException)
|
||||||
|
{
|
||||||
|
return NotFound();
|
||||||
|
}
|
||||||
|
catch (ArgumentException ex)
|
||||||
|
{
|
||||||
|
return BadRequest(new RequestError(ex.Message));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,123 +0,0 @@
|
|||||||
// Kyoo - A portable and vast media library solution.
|
|
||||||
// Copyright (c) Kyoo.
|
|
||||||
//
|
|
||||||
// See AUTHORS.md and LICENSE file in the project root for full license information.
|
|
||||||
//
|
|
||||||
// Kyoo is free software: you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU General Public License as published by
|
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
|
||||||
// any later version.
|
|
||||||
//
|
|
||||||
// Kyoo is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with Kyoo. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Kyoo.Abstractions.Controllers;
|
|
||||||
using Kyoo.Abstractions.Models;
|
|
||||||
using Kyoo.Abstractions.Models.Exceptions;
|
|
||||||
using Kyoo.Abstractions.Models.Permissions;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
|
|
||||||
namespace Kyoo.Core.Api
|
|
||||||
{
|
|
||||||
[Route("api/people")]
|
|
||||||
[ApiController]
|
|
||||||
[PartialPermission(nameof(PeopleApi))]
|
|
||||||
public class PeopleApi : CrudApi<People>
|
|
||||||
{
|
|
||||||
private readonly ILibraryManager _libraryManager;
|
|
||||||
private readonly IFileSystem _files;
|
|
||||||
private readonly IThumbnailsManager _thumbs;
|
|
||||||
|
|
||||||
public PeopleApi(ILibraryManager libraryManager,
|
|
||||||
IFileSystem files,
|
|
||||||
IThumbnailsManager thumbs)
|
|
||||||
: base(libraryManager.PeopleRepository)
|
|
||||||
{
|
|
||||||
_libraryManager = libraryManager;
|
|
||||||
_files = files;
|
|
||||||
_thumbs = thumbs;
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("{id:int}/role")]
|
|
||||||
[HttpGet("{id:int}/roles")]
|
|
||||||
[PartialPermission(Kind.Read)]
|
|
||||||
public async Task<ActionResult<Page<PeopleRole>>> GetRoles(int id,
|
|
||||||
[FromQuery] string sortBy,
|
|
||||||
[FromQuery] int afterID,
|
|
||||||
[FromQuery] Dictionary<string, string> where,
|
|
||||||
[FromQuery] int limit = 20)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
ICollection<PeopleRole> resources = await _libraryManager.GetRolesFromPeople(id,
|
|
||||||
ApiHelper.ParseWhere<PeopleRole>(where),
|
|
||||||
new Sort<PeopleRole>(sortBy),
|
|
||||||
new Pagination(limit, afterID));
|
|
||||||
|
|
||||||
return Page(resources, limit);
|
|
||||||
}
|
|
||||||
catch (ItemNotFoundException)
|
|
||||||
{
|
|
||||||
return NotFound();
|
|
||||||
}
|
|
||||||
catch (ArgumentException ex)
|
|
||||||
{
|
|
||||||
return BadRequest(new { Error = ex.Message });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("{slug}/role")]
|
|
||||||
[HttpGet("{slug}/roles")]
|
|
||||||
[PartialPermission(Kind.Read)]
|
|
||||||
public async Task<ActionResult<Page<PeopleRole>>> GetRoles(string slug,
|
|
||||||
[FromQuery] string sortBy,
|
|
||||||
[FromQuery] int afterID,
|
|
||||||
[FromQuery] Dictionary<string, string> where,
|
|
||||||
[FromQuery] int limit = 20)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
ICollection<PeopleRole> resources = await _libraryManager.GetRolesFromPeople(slug,
|
|
||||||
ApiHelper.ParseWhere<PeopleRole>(where),
|
|
||||||
new Sort<PeopleRole>(sortBy),
|
|
||||||
new Pagination(limit, afterID));
|
|
||||||
|
|
||||||
return Page(resources, limit);
|
|
||||||
}
|
|
||||||
catch (ItemNotFoundException)
|
|
||||||
{
|
|
||||||
return NotFound();
|
|
||||||
}
|
|
||||||
catch (ArgumentException ex)
|
|
||||||
{
|
|
||||||
return BadRequest(new { Error = ex.Message });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("{id:int}/poster")]
|
|
||||||
public async Task<IActionResult> GetPeopleIcon(int id)
|
|
||||||
{
|
|
||||||
People people = await _libraryManager.GetOrDefault<People>(id);
|
|
||||||
if (people == null)
|
|
||||||
return NotFound();
|
|
||||||
return _files.FileResult(await _thumbs.GetImagePath(people, Images.Poster));
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("{slug}/poster")]
|
|
||||||
public async Task<IActionResult> GetPeopleIcon(string slug)
|
|
||||||
{
|
|
||||||
People people = await _libraryManager.GetOrDefault<People>(slug);
|
|
||||||
if (people == null)
|
|
||||||
return NotFound();
|
|
||||||
return _files.FileResult(await _thumbs.GetImagePath(people, Images.Poster));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -24,6 +24,7 @@ using System.Threading.Tasks;
|
|||||||
using Kyoo.Abstractions.Controllers;
|
using Kyoo.Abstractions.Controllers;
|
||||||
using Kyoo.Abstractions.Models;
|
using Kyoo.Abstractions.Models;
|
||||||
using Kyoo.Abstractions.Models.Attributes;
|
using Kyoo.Abstractions.Models.Attributes;
|
||||||
|
using Kyoo.Abstractions.Models.Exceptions;
|
||||||
using Kyoo.Abstractions.Models.Permissions;
|
using Kyoo.Abstractions.Models.Permissions;
|
||||||
using Kyoo.Abstractions.Models.Utils;
|
using Kyoo.Abstractions.Models.Utils;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
@ -188,10 +189,12 @@ namespace Kyoo.Core.Api
|
|||||||
slug => _libraryManager.GetItemsFromLibrary(slug, whereQuery, sort, pagination)
|
slug => _libraryManager.GetItemsFromLibrary(slug, whereQuery, sort, pagination)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!resources.Any() && await _libraryManager.GetOrDefault(identifier.IsSame<Library>()) == null)
|
|
||||||
return NotFound();
|
|
||||||
return Page(resources, limit);
|
return Page(resources, limit);
|
||||||
}
|
}
|
||||||
|
catch (ItemNotFoundException)
|
||||||
|
{
|
||||||
|
return NotFound();
|
||||||
|
}
|
||||||
catch (ArgumentException ex)
|
catch (ArgumentException ex)
|
||||||
{
|
{
|
||||||
return BadRequest(new RequestError(ex.Message));
|
return BadRequest(new RequestError(ex.Message));
|
||||||
|
@ -25,6 +25,7 @@ using System.Threading.Tasks;
|
|||||||
using Kyoo.Abstractions.Controllers;
|
using Kyoo.Abstractions.Controllers;
|
||||||
using Kyoo.Abstractions.Models;
|
using Kyoo.Abstractions.Models;
|
||||||
using Kyoo.Abstractions.Models.Attributes;
|
using Kyoo.Abstractions.Models.Attributes;
|
||||||
|
using Kyoo.Abstractions.Models.Exceptions;
|
||||||
using Kyoo.Abstractions.Models.Permissions;
|
using Kyoo.Abstractions.Models.Permissions;
|
||||||
using Kyoo.Abstractions.Models.Utils;
|
using Kyoo.Abstractions.Models.Utils;
|
||||||
using Kyoo.Core.Models.Options;
|
using Kyoo.Core.Models.Options;
|
||||||
@ -174,7 +175,7 @@ namespace Kyoo.Core.Api
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get people that made this show
|
/// Get staff
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// List staff members that made this show.
|
/// List staff members that made this show.
|
||||||
@ -187,8 +188,8 @@ namespace Kyoo.Core.Api
|
|||||||
/// <returns>A page of people.</returns>
|
/// <returns>A page of people.</returns>
|
||||||
/// <response code="400">The filters or the sort parameters are invalid.</response>
|
/// <response code="400">The filters or the sort parameters are invalid.</response>
|
||||||
/// <response code="404">No show with the given ID or slug could be found.</response>
|
/// <response code="404">No show with the given ID or slug could be found.</response>
|
||||||
[HttpGet("{identifier:id}/people")]
|
[HttpGet("{identifier:id}/staff")]
|
||||||
[HttpGet("{identifier:id}/staff", Order = AlternativeRoute)]
|
[HttpGet("{identifier:id}/people", Order = AlternativeRoute)]
|
||||||
[PartialPermission(Kind.Read)]
|
[PartialPermission(Kind.Read)]
|
||||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
[ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(RequestError))]
|
[ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(RequestError))]
|
||||||
@ -209,11 +210,12 @@ namespace Kyoo.Core.Api
|
|||||||
id => _libraryManager.GetPeopleFromShow(id, whereQuery, sort, pagination),
|
id => _libraryManager.GetPeopleFromShow(id, whereQuery, sort, pagination),
|
||||||
slug => _libraryManager.GetPeopleFromShow(slug, whereQuery, sort, pagination)
|
slug => _libraryManager.GetPeopleFromShow(slug, whereQuery, sort, pagination)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!resources.Any() && await _libraryManager.GetOrDefault(identifier.IsSame<Show>()) == null)
|
|
||||||
return NotFound();
|
|
||||||
return Page(resources, limit);
|
return Page(resources, limit);
|
||||||
}
|
}
|
||||||
|
catch (ItemNotFoundException)
|
||||||
|
{
|
||||||
|
return NotFound();
|
||||||
|
}
|
||||||
catch (ArgumentException ex)
|
catch (ArgumentException ex)
|
||||||
{
|
{
|
||||||
return BadRequest(new RequestError(ex.Message));
|
return BadRequest(new RequestError(ex.Message));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user