mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-24 02:02:36 -04:00
Starting to clean up
This commit is contained in:
parent
63a85124b7
commit
d0117a8325
@ -33,7 +33,6 @@ namespace Kyoo.Controllers
|
||||
|
||||
|
||||
// Helpers
|
||||
Task<Show> GetShowByPath(string path);
|
||||
Task AddShowLink(int showID, int? libraryID, int? collectionID);
|
||||
Task AddShowLink([NotNull] Show show, Library library, Collection collection);
|
||||
|
||||
@ -122,26 +121,26 @@ namespace Kyoo.Controllers
|
||||
Task<ICollection<People>> SearchPeople(string searchQuery);
|
||||
|
||||
//Register values
|
||||
Task RegisterLibrary(Library library);
|
||||
Task RegisterCollection(Collection collection);
|
||||
Task RegisterShow(Show show);
|
||||
Task RegisterSeason(Season season);
|
||||
Task RegisterEpisode(Episode episode);
|
||||
Task RegisterTrack(Track track);
|
||||
Task RegisterGenre(Genre genre);
|
||||
Task RegisterStudio(Studio studio);
|
||||
Task RegisterPeople(People people);
|
||||
Task<Library> RegisterLibrary(Library library);
|
||||
Task<Collection> RegisterCollection(Collection collection);
|
||||
Task<Show> RegisterShow(Show show);
|
||||
Task<Season> RegisterSeason(Season season);
|
||||
Task<Episode> RegisterEpisode(Episode episode);
|
||||
Task<Track> RegisterTrack(Track track);
|
||||
Task<Genre> RegisterGenre(Genre genre);
|
||||
Task<Studio> RegisterStudio(Studio studio);
|
||||
Task<People> RegisterPeople(People people);
|
||||
|
||||
// Edit values
|
||||
Task EditLibrary(Library library, bool resetOld);
|
||||
Task EditCollection(Collection collection, bool resetOld);
|
||||
Task EditShow(Show show, bool resetOld);
|
||||
Task EditSeason(Season season, bool resetOld);
|
||||
Task EditEpisode(Episode episode, bool resetOld);
|
||||
Task EditTrack(Track track, bool resetOld);
|
||||
Task EditGenre(Genre genre, bool resetOld);
|
||||
Task EditStudio(Studio studio, bool resetOld);
|
||||
Task EditPeople(People people, bool resetOld);
|
||||
Task<Library> EditLibrary(Library library, bool resetOld);
|
||||
Task<Collection> EditCollection(Collection collection, bool resetOld);
|
||||
Task<Show> EditShow(Show show, bool resetOld);
|
||||
Task<Season> EditSeason(Season season, bool resetOld);
|
||||
Task<Episode> EditEpisode(Episode episode, bool resetOld);
|
||||
Task<Track> EditTrack(Track track, bool resetOld);
|
||||
Task<Genre> EditGenre(Genre genre, bool resetOld);
|
||||
Task<Studio> EditStudio(Studio studio, bool resetOld);
|
||||
Task<People> EditPeople(People people, bool resetOld);
|
||||
|
||||
|
||||
// Delete values
|
||||
@ -154,5 +153,27 @@ namespace Kyoo.Controllers
|
||||
Task DeleteGenre(Genre genre);
|
||||
Task DeleteStudio(Studio studio);
|
||||
Task DeletePeople(People people);
|
||||
|
||||
//Delete by slug
|
||||
Task DelteLibrary(string slug);
|
||||
Task DeleteCollection(string slug);
|
||||
Task DeleteShow(string slug);
|
||||
Task DeleteSeason(string slug);
|
||||
Task DeleteEpisode(string slug);
|
||||
Task DeleteTrack(string slug);
|
||||
Task DeleteGenre(string slug);
|
||||
Task DeleteStudio(string slug);
|
||||
Task DeletePeople(string slug);
|
||||
|
||||
//Delete by id
|
||||
Task DelteLibrary(int id);
|
||||
Task DeleteCollection(int id);
|
||||
Task DeleteShow(int id);
|
||||
Task DeleteSeason(int id);
|
||||
Task DeleteEpisode(int id);
|
||||
Task DeleteTrack(int id);
|
||||
Task DeleteGenre(int id);
|
||||
Task DeleteStudio(int id);
|
||||
Task DeletePeople(int id);
|
||||
}
|
||||
}
|
||||
|
@ -81,9 +81,9 @@ namespace Kyoo.Controllers
|
||||
Pagination page = default
|
||||
) => GetAll(where, new Sort<T>(sort), page);
|
||||
|
||||
Task<int> Create([NotNull] T obj);
|
||||
Task<int> CreateIfNotExists([NotNull] T obj);
|
||||
Task Edit([NotNull] T edited, bool resetOld);
|
||||
Task<T> Create([NotNull] T obj);
|
||||
Task<T> CreateIfNotExists([NotNull] T obj);
|
||||
Task<T> Edit([NotNull] T edited, bool resetOld);
|
||||
|
||||
Task Delete(int id);
|
||||
Task Delete(string slug);
|
||||
@ -99,7 +99,6 @@ namespace Kyoo.Controllers
|
||||
|
||||
public interface IShowRepository : IRepository<Show>
|
||||
{
|
||||
Task<Show> GetByPath(string path);
|
||||
Task AddShowLink(int showID, int? libraryID, int? collectionID);
|
||||
}
|
||||
|
||||
|
@ -221,12 +221,7 @@ namespace Kyoo.Controllers
|
||||
{
|
||||
return _episodes.GetEpisodes(seasonID);
|
||||
}
|
||||
|
||||
public Task<Show> GetShowByPath(string path)
|
||||
{
|
||||
return _shows.GetByPath(path);
|
||||
}
|
||||
|
||||
|
||||
public Task AddShowLink(int showID, int? libraryID, int? collectionID)
|
||||
{
|
||||
return _shows.AddShowLink(showID, libraryID, collectionID);
|
||||
@ -279,92 +274,92 @@ namespace Kyoo.Controllers
|
||||
return _people.Search(searchQuery);
|
||||
}
|
||||
|
||||
public Task RegisterLibrary(Library library)
|
||||
public Task<Library> RegisterLibrary(Library library)
|
||||
{
|
||||
return _libraries.Create(library);
|
||||
}
|
||||
|
||||
public Task RegisterCollection(Collection collection)
|
||||
public Task<Collection> RegisterCollection(Collection collection)
|
||||
{
|
||||
return _collections.Create(collection);
|
||||
}
|
||||
|
||||
public Task RegisterShow(Show show)
|
||||
public Task<Show> RegisterShow(Show show)
|
||||
{
|
||||
return _shows.Create(show);
|
||||
}
|
||||
|
||||
public Task RegisterSeason(Season season)
|
||||
public Task<Season> RegisterSeason(Season season)
|
||||
{
|
||||
return _seasons.Create(season);
|
||||
}
|
||||
|
||||
public Task RegisterEpisode(Episode episode)
|
||||
public Task<Episode> RegisterEpisode(Episode episode)
|
||||
{
|
||||
return _episodes.Create(episode);
|
||||
}
|
||||
|
||||
public Task RegisterTrack(Track track)
|
||||
public Task<Track> RegisterTrack(Track track)
|
||||
{
|
||||
return _tracks.Create(track);
|
||||
}
|
||||
|
||||
public Task RegisterGenre(Genre genre)
|
||||
public Task<Genre> RegisterGenre(Genre genre)
|
||||
{
|
||||
return _genres.Create(genre);
|
||||
}
|
||||
|
||||
public Task RegisterStudio(Studio studio)
|
||||
public Task<Studio> RegisterStudio(Studio studio)
|
||||
{
|
||||
return _studios.Create(studio);
|
||||
}
|
||||
|
||||
public Task RegisterPeople(People people)
|
||||
public Task<People> RegisterPeople(People people)
|
||||
{
|
||||
return _people.Create(people);
|
||||
}
|
||||
|
||||
public Task EditLibrary(Library library, bool resetOld)
|
||||
public Task<Library> EditLibrary(Library library, bool resetOld)
|
||||
{
|
||||
return _libraries.Edit(library, resetOld);
|
||||
}
|
||||
|
||||
public Task EditCollection(Collection collection, bool resetOld)
|
||||
public Task<Collection> EditCollection(Collection collection, bool resetOld)
|
||||
{
|
||||
return _collections.Edit(collection, resetOld);
|
||||
}
|
||||
|
||||
public Task EditShow(Show show, bool resetOld)
|
||||
public Task<Show> EditShow(Show show, bool resetOld)
|
||||
{
|
||||
return _shows.Edit(show, resetOld);
|
||||
}
|
||||
|
||||
public Task EditSeason(Season season, bool resetOld)
|
||||
public Task<Season> EditSeason(Season season, bool resetOld)
|
||||
{
|
||||
return _seasons.Edit(season, resetOld);
|
||||
}
|
||||
|
||||
public Task EditEpisode(Episode episode, bool resetOld)
|
||||
public Task<Episode> EditEpisode(Episode episode, bool resetOld)
|
||||
{
|
||||
return _episodes.Edit(episode, resetOld);
|
||||
}
|
||||
|
||||
public Task EditTrack(Track track, bool resetOld)
|
||||
public Task<Track> EditTrack(Track track, bool resetOld)
|
||||
{
|
||||
return _tracks.Edit(track, resetOld);
|
||||
}
|
||||
|
||||
public Task EditGenre(Genre genre, bool resetOld)
|
||||
public Task<Genre> EditGenre(Genre genre, bool resetOld)
|
||||
{
|
||||
return _genres.Edit(genre, resetOld);
|
||||
}
|
||||
|
||||
public Task EditStudio(Studio studio, bool resetOld)
|
||||
public Task<Studio> EditStudio(Studio studio, bool resetOld)
|
||||
{
|
||||
return _studios.Edit(studio, resetOld);
|
||||
}
|
||||
|
||||
public Task EditPeople(People people, bool resetOld)
|
||||
public Task<People> EditPeople(People people, bool resetOld)
|
||||
{
|
||||
return _people.Edit(people, resetOld);
|
||||
}
|
||||
@ -413,5 +408,95 @@ namespace Kyoo.Controllers
|
||||
{
|
||||
return _people.Delete(people);
|
||||
}
|
||||
|
||||
public Task DelteLibrary(string library)
|
||||
{
|
||||
return _libraries.Delete(library);
|
||||
}
|
||||
|
||||
public Task DeleteCollection(string collection)
|
||||
{
|
||||
return _collections.Delete(collection);
|
||||
}
|
||||
|
||||
public Task DeleteShow(string show)
|
||||
{
|
||||
return _shows.Delete(show);
|
||||
}
|
||||
|
||||
public Task DeleteSeason(string season)
|
||||
{
|
||||
return _seasons.Delete(season);
|
||||
}
|
||||
|
||||
public Task DeleteEpisode(string episode)
|
||||
{
|
||||
return _episodes.Delete(episode);
|
||||
}
|
||||
|
||||
public Task DeleteTrack(string track)
|
||||
{
|
||||
return _tracks.Delete(track);
|
||||
}
|
||||
|
||||
public Task DeleteGenre(string genre)
|
||||
{
|
||||
return _genres.Delete(genre);
|
||||
}
|
||||
|
||||
public Task DeleteStudio(string studio)
|
||||
{
|
||||
return _studios.Delete(studio);
|
||||
}
|
||||
|
||||
public Task DeletePeople(string people)
|
||||
{
|
||||
return _people.Delete(people);
|
||||
}
|
||||
|
||||
public Task DelteLibrary(int library)
|
||||
{
|
||||
return _libraries.Delete(library);
|
||||
}
|
||||
|
||||
public Task DeleteCollection(int collection)
|
||||
{
|
||||
return _collections.Delete(collection);
|
||||
}
|
||||
|
||||
public Task DeleteShow(int show)
|
||||
{
|
||||
return _shows.Delete(show);
|
||||
}
|
||||
|
||||
public Task DeleteSeason(int season)
|
||||
{
|
||||
return _seasons.Delete(season);
|
||||
}
|
||||
|
||||
public Task DeleteEpisode(int episode)
|
||||
{
|
||||
return _episodes.Delete(episode);
|
||||
}
|
||||
|
||||
public Task DeleteTrack(int track)
|
||||
{
|
||||
return _tracks.Delete(track);
|
||||
}
|
||||
|
||||
public Task DeleteGenre(int genre)
|
||||
{
|
||||
return _genres.Delete(genre);
|
||||
}
|
||||
|
||||
public Task DeleteStudio(int studio)
|
||||
{
|
||||
return _studios.Delete(studio);
|
||||
}
|
||||
|
||||
public Task DeletePeople(int people)
|
||||
{
|
||||
return _people.Delete(people);
|
||||
}
|
||||
}
|
||||
}
|
@ -72,7 +72,7 @@ namespace Kyoo.Controllers
|
||||
return await query.ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<int> Create(Collection obj)
|
||||
public async Task<Collection> Create(Collection obj)
|
||||
{
|
||||
if (obj == null)
|
||||
throw new ArgumentNullException(nameof(obj));
|
||||
@ -91,17 +91,17 @@ namespace Kyoo.Controllers
|
||||
throw;
|
||||
}
|
||||
|
||||
return obj.ID;
|
||||
return obj;
|
||||
}
|
||||
|
||||
public async Task<int> CreateIfNotExists(Collection obj)
|
||||
public async Task<Collection> CreateIfNotExists(Collection obj)
|
||||
{
|
||||
if (obj == null)
|
||||
throw new ArgumentNullException(nameof(obj));
|
||||
|
||||
Collection old = await Get(obj.Slug);
|
||||
if (old != null)
|
||||
return old.ID;
|
||||
return old;
|
||||
try
|
||||
{
|
||||
return await Create(obj);
|
||||
@ -111,11 +111,11 @@ namespace Kyoo.Controllers
|
||||
old = await Get(obj.Slug);
|
||||
if (old == null)
|
||||
throw new SystemException("Unknown database state.");
|
||||
return old.ID;
|
||||
return old;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task Edit(Collection edited, bool resetOld)
|
||||
public async Task<Collection> Edit(Collection edited, bool resetOld)
|
||||
{
|
||||
if (edited == null)
|
||||
throw new ArgumentNullException(nameof(edited));
|
||||
@ -130,6 +130,7 @@ namespace Kyoo.Controllers
|
||||
Utility.Merge(old, edited);
|
||||
|
||||
await _database.SaveChangesAsync();
|
||||
return old;
|
||||
}
|
||||
|
||||
public async Task Delete(int id)
|
||||
|
@ -1,7 +1,7 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using IdentityServer4.Services;
|
||||
using Kyoo.Api;
|
||||
using Kyoo.API;
|
||||
using Kyoo.Controllers;
|
||||
using Kyoo.Models;
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
|
@ -16,7 +16,7 @@ using Microsoft.AspNetCore.StaticFiles;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using SignInResult = Microsoft.AspNetCore.Identity.SignInResult;
|
||||
|
||||
namespace Kyoo.Api
|
||||
namespace Kyoo.API
|
||||
{
|
||||
public class RegisterRequest
|
||||
{
|
||||
|
@ -5,7 +5,7 @@ using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
|
||||
namespace Kyoo.Api
|
||||
namespace Kyoo.API
|
||||
{
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
|
@ -6,7 +6,7 @@ using System.Threading.Tasks;
|
||||
using Kyoo.Controllers;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
|
||||
namespace Kyoo.Api
|
||||
namespace Kyoo.API
|
||||
{
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
|
@ -6,7 +6,7 @@ using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
|
||||
namespace Kyoo.Api
|
||||
namespace Kyoo.API
|
||||
{
|
||||
[Route("api/libraries")]
|
||||
[Route("api/library")]
|
||||
|
@ -5,7 +5,7 @@ using Kyoo.Models;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Kyoo.Api
|
||||
namespace Kyoo.API
|
||||
{
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
|
@ -4,7 +4,7 @@ using Kyoo.Models;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Kyoo.Api
|
||||
namespace Kyoo.API
|
||||
{
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
|
@ -5,34 +5,31 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Kyoo.Controllers;
|
||||
using Kyoo.Models.Exceptions;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
namespace Kyoo.Api
|
||||
namespace Kyoo.API
|
||||
{
|
||||
[Route("api/shows")]
|
||||
[Route("api/show")]
|
||||
[ApiController]
|
||||
public class ShowsAPI : ControllerBase
|
||||
{
|
||||
private readonly ILibraryManager _libraryManager;
|
||||
private readonly IShowRepository _shows;
|
||||
private readonly IProviderManager _providerManager;
|
||||
private readonly DatabaseContext _database;
|
||||
private readonly IThumbnailsManager _thumbnailsManager;
|
||||
private readonly ITaskManager _taskManager;
|
||||
private readonly string _baseURL;
|
||||
|
||||
public ShowsAPI(ILibraryManager libraryManager,
|
||||
public ShowsAPI(IShowRepository shows,
|
||||
IProviderManager providerManager,
|
||||
DatabaseContext database,
|
||||
IThumbnailsManager thumbnailsManager,
|
||||
ITaskManager taskManager,
|
||||
IConfiguration configuration)
|
||||
{
|
||||
_libraryManager = libraryManager;
|
||||
_shows = shows;
|
||||
_providerManager = providerManager;
|
||||
_database = database;
|
||||
_thumbnailsManager = thumbnailsManager;
|
||||
_taskManager = taskManager;
|
||||
_baseURL = configuration.GetValue<string>("public_url").TrimEnd('/');
|
||||
@ -51,23 +48,34 @@ namespace Kyoo.Api
|
||||
if (limit == 0)
|
||||
limit = 20;
|
||||
|
||||
ICollection<Show> shows;
|
||||
try
|
||||
{
|
||||
shows = await _libraryManager.GetShows(Utility.ParseWhere<Show>(where),
|
||||
ICollection<Show> shows = await _shows.GetAll(Utility.ParseWhere<Show>(where),
|
||||
new Sort<Show>(sortBy),
|
||||
new Pagination(limit, afterID));
|
||||
|
||||
return new Page<Show>(shows,
|
||||
x => $"{x.ID}",
|
||||
_baseURL + Request.Path,
|
||||
Request.Query.ToDictionary(x => x.Key, x => x.Value.ToString(), StringComparer.InvariantCultureIgnoreCase),
|
||||
limit);
|
||||
}
|
||||
catch (ArgumentException ex)
|
||||
{
|
||||
return BadRequest(new { Error = ex.Message });
|
||||
}
|
||||
|
||||
return new Page<Show>(shows,
|
||||
x => $"{x.ID}",
|
||||
_baseURL + Request.Path,
|
||||
Request.Query.ToDictionary(x => x.Key, x => x.Value.ToString(), StringComparer.InvariantCultureIgnoreCase),
|
||||
limit);
|
||||
}
|
||||
|
||||
[HttpGet("{id}")]
|
||||
[Authorize(Policy="Read")]
|
||||
[JsonDetailed]
|
||||
public async Task<ActionResult<Show>> GetShow(int id)
|
||||
{
|
||||
Show show = await _shows.Get(id);
|
||||
if (show == null)
|
||||
return NotFound();
|
||||
|
||||
return show;
|
||||
}
|
||||
|
||||
[HttpGet("{slug}")]
|
||||
@ -75,28 +83,67 @@ namespace Kyoo.Api
|
||||
[JsonDetailed]
|
||||
public async Task<ActionResult<Show>> GetShow(string slug)
|
||||
{
|
||||
Show show = await _libraryManager.GetShow(slug);
|
||||
|
||||
Show show = await _shows.Get(slug);
|
||||
if (show == null)
|
||||
return NotFound();
|
||||
|
||||
return show;
|
||||
}
|
||||
|
||||
[HttpPost("edit/{slug}")]
|
||||
[Authorize(Policy="Write")]
|
||||
public async Task<IActionResult> EditShow(string slug, [FromBody] Show show)
|
||||
{
|
||||
if (!ModelState.IsValid)
|
||||
return BadRequest(show);
|
||||
|
||||
Show old = _database.Shows.AsNoTracking().FirstOrDefault(x => x.Slug == slug);
|
||||
[HttpPost]
|
||||
[Authorize(Policy="Write")]
|
||||
public async Task<ActionResult<Show>> CreateShow([FromBody] Show show)
|
||||
{
|
||||
try
|
||||
{
|
||||
return await _shows.Create(show);
|
||||
}
|
||||
catch (DuplicatedItemException)
|
||||
{
|
||||
Show existing = await _shows.Get(show.Slug);
|
||||
return Conflict(existing);
|
||||
}
|
||||
}
|
||||
|
||||
[HttpPut("{slug}")]
|
||||
[Authorize(Policy="Write")]
|
||||
public async Task<ActionResult<Show>> EditShow(string slug, [FromQuery] bool resetOld, [FromBody] Show show)
|
||||
{
|
||||
Show old = await _shows.Get(slug);
|
||||
if (old == null)
|
||||
return NotFound();
|
||||
show.ID = old.ID;
|
||||
show.Slug = slug;
|
||||
show.Path = old.Path;
|
||||
await _libraryManager.EditShow(show, false);
|
||||
return await _shows.Edit(show, resetOld);
|
||||
}
|
||||
|
||||
[HttpDelete("{slug}")]
|
||||
// [Authorize(Policy="Write")]
|
||||
public async Task<IActionResult> DeleteShow(string slug)
|
||||
{
|
||||
try
|
||||
{
|
||||
await _shows.Delete(slug);
|
||||
}
|
||||
catch (ItemNotFound)
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
return Ok();
|
||||
}
|
||||
|
||||
[HttpDelete("{id}")]
|
||||
// [Authorize(Policy="Write")]
|
||||
public async Task<IActionResult> DeleteShow(int id)
|
||||
{
|
||||
try
|
||||
{
|
||||
await _shows.Delete(id);
|
||||
}
|
||||
catch (ItemNotFound)
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
return Ok();
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,7 @@ using Kyoo.Controllers;
|
||||
using Kyoo.Models.Watch;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
|
||||
namespace Kyoo.Api
|
||||
namespace Kyoo.API
|
||||
{
|
||||
[Route("[controller]")]
|
||||
[ApiController]
|
||||
@ -33,7 +33,7 @@ namespace Kyoo.Api
|
||||
string identifier,
|
||||
string extension)
|
||||
{
|
||||
string languageTag = identifier.Length == 3 ? identifier.Substring(0, 3) : null;
|
||||
string languageTag = identifier.Length >= 3 ? identifier.Substring(0, 3) : null;
|
||||
bool forced = identifier.Length > 4 && identifier.Substring(4) == "forced";
|
||||
Track subtitle = null;
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
using Kyoo.Controllers;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
|
||||
namespace Kyoo.Api
|
||||
namespace Kyoo.API
|
||||
{
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
|
@ -5,7 +5,7 @@ using System.Threading.Tasks;
|
||||
using Kyoo.Controllers;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
|
||||
namespace Kyoo.Api
|
||||
namespace Kyoo.API
|
||||
{
|
||||
public class ThumbnailController : ControllerBase
|
||||
{
|
||||
|
@ -6,7 +6,7 @@ using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
|
||||
namespace Kyoo.Api
|
||||
namespace Kyoo.API
|
||||
{
|
||||
[Route("[controller]")]
|
||||
[ApiController]
|
||||
|
@ -4,7 +4,7 @@ using Kyoo.Models;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace Kyoo.Api
|
||||
namespace Kyoo.API
|
||||
{
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
|
Loading…
x
Reference in New Issue
Block a user