mirror of
https://github.com/Kareadita/Kavita.git
synced 2025-06-23 15:30:34 -04:00
Added NoContent responses when APIs don't find entities (#2028)
This commit is contained in:
parent
2e5e114970
commit
3a7e3bea8c
@ -62,7 +62,7 @@ public class ReaderController : BaseApiController
|
|||||||
{
|
{
|
||||||
if (await _unitOfWork.UserRepository.GetUserIdByApiKeyAsync(apiKey) == 0) return BadRequest();
|
if (await _unitOfWork.UserRepository.GetUserIdByApiKeyAsync(apiKey) == 0) return BadRequest();
|
||||||
var chapter = await _cacheService.Ensure(chapterId);
|
var chapter = await _cacheService.Ensure(chapterId);
|
||||||
if (chapter == null) return BadRequest("There was an issue finding pdf file for reading");
|
if (chapter == null) return NoContent();
|
||||||
|
|
||||||
// Validate the user has access to the PDF
|
// Validate the user has access to the PDF
|
||||||
var series = await _unitOfWork.SeriesRepository.GetSeriesForChapter(chapter.Id,
|
var series = await _unitOfWork.SeriesRepository.GetSeriesForChapter(chapter.Id,
|
||||||
@ -101,7 +101,7 @@ public class ReaderController : BaseApiController
|
|||||||
if (page < 0) page = 0;
|
if (page < 0) page = 0;
|
||||||
if (await _unitOfWork.UserRepository.GetUserIdByApiKeyAsync(apiKey) == 0) return BadRequest();
|
if (await _unitOfWork.UserRepository.GetUserIdByApiKeyAsync(apiKey) == 0) return BadRequest();
|
||||||
var chapter = await _cacheService.Ensure(chapterId, extractPdf);
|
var chapter = await _cacheService.Ensure(chapterId, extractPdf);
|
||||||
if (chapter == null) return BadRequest("There was an issue finding image file for reading");
|
if (chapter == null) return NoContent();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -125,7 +125,7 @@ public class ReaderController : BaseApiController
|
|||||||
{
|
{
|
||||||
if (await _unitOfWork.UserRepository.GetUserIdByApiKeyAsync(apiKey) == 0) return BadRequest();
|
if (await _unitOfWork.UserRepository.GetUserIdByApiKeyAsync(apiKey) == 0) return BadRequest();
|
||||||
var chapter = await _cacheService.Ensure(chapterId, true);
|
var chapter = await _cacheService.Ensure(chapterId, true);
|
||||||
if (chapter == null) return BadRequest("There was an issue extracting images from chapter");
|
if (chapter == null) return NoContent();
|
||||||
var images = _cacheService.GetCachedPages(chapterId);
|
var images = _cacheService.GetCachedPages(chapterId);
|
||||||
|
|
||||||
var path = await _readerService.GetThumbnail(chapter, pageNum, images);
|
var path = await _readerService.GetThumbnail(chapter, pageNum, images);
|
||||||
@ -148,7 +148,7 @@ public class ReaderController : BaseApiController
|
|||||||
{
|
{
|
||||||
if (page < 0) page = 0;
|
if (page < 0) page = 0;
|
||||||
var userId = await _unitOfWork.UserRepository.GetUserIdByApiKeyAsync(apiKey);
|
var userId = await _unitOfWork.UserRepository.GetUserIdByApiKeyAsync(apiKey);
|
||||||
if (userId == 0) return BadRequest();
|
if (userId == 0) return Unauthorized();
|
||||||
|
|
||||||
var totalPages = await _cacheService.CacheBookmarkForSeries(userId, seriesId);
|
var totalPages = await _cacheService.CacheBookmarkForSeries(userId, seriesId);
|
||||||
if (page > totalPages)
|
if (page > totalPages)
|
||||||
@ -185,7 +185,7 @@ public class ReaderController : BaseApiController
|
|||||||
{
|
{
|
||||||
if (chapterId <= 0) return ArraySegment<FileDimensionDto>.Empty;
|
if (chapterId <= 0) return ArraySegment<FileDimensionDto>.Empty;
|
||||||
var chapter = await _cacheService.Ensure(chapterId, extractPdf);
|
var chapter = await _cacheService.Ensure(chapterId, extractPdf);
|
||||||
if (chapter == null) return BadRequest("Could not find Chapter");
|
if (chapter == null) return NoContent();
|
||||||
return Ok(_cacheService.GetCachedFileDimensions(_cacheService.GetCachePath(chapterId)));
|
return Ok(_cacheService.GetCachedFileDimensions(_cacheService.GetCachePath(chapterId)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,7 +203,7 @@ public class ReaderController : BaseApiController
|
|||||||
{
|
{
|
||||||
if (chapterId <= 0) return Ok(null); // This can happen occasionally from UI, we should just ignore
|
if (chapterId <= 0) return Ok(null); // This can happen occasionally from UI, we should just ignore
|
||||||
var chapter = await _cacheService.Ensure(chapterId, extractPdf);
|
var chapter = await _cacheService.Ensure(chapterId, extractPdf);
|
||||||
if (chapter == null) return BadRequest("Could not find Chapter");
|
if (chapter == null) return NoContent();
|
||||||
|
|
||||||
var dto = await _unitOfWork.ChapterRepository.GetChapterInfoDtoAsync(chapterId);
|
var dto = await _unitOfWork.ChapterRepository.GetChapterInfoDtoAsync(chapterId);
|
||||||
if (dto == null) return BadRequest("Please perform a scan on this series or library and try again");
|
if (dto == null) return BadRequest("Please perform a scan on this series or library and try again");
|
||||||
|
@ -64,16 +64,9 @@ public class SeriesController : BaseApiController
|
|||||||
public async Task<ActionResult<SeriesDto>> GetSeries(int seriesId)
|
public async Task<ActionResult<SeriesDto>> GetSeries(int seriesId)
|
||||||
{
|
{
|
||||||
var userId = await _unitOfWork.UserRepository.GetUserIdByUsernameAsync(User.GetUsername());
|
var userId = await _unitOfWork.UserRepository.GetUserIdByUsernameAsync(User.GetUsername());
|
||||||
try
|
var series = await _unitOfWork.SeriesRepository.GetSeriesDtoByIdAsync(seriesId, userId);
|
||||||
{
|
if (series == null) return NoContent();
|
||||||
return Ok(await _unitOfWork.SeriesRepository.GetSeriesDtoByIdAsync(seriesId, userId));
|
return Ok(series);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
_logger.LogError(e, "There was an issue fetching {SeriesId}", seriesId);
|
|
||||||
throw new KavitaException("This series does not exist");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Authorize(Policy = "RequireAdminRole")]
|
[Authorize(Policy = "RequireAdminRole")]
|
||||||
@ -114,13 +107,16 @@ public class SeriesController : BaseApiController
|
|||||||
public async Task<ActionResult<VolumeDto?>> GetVolume(int volumeId)
|
public async Task<ActionResult<VolumeDto?>> GetVolume(int volumeId)
|
||||||
{
|
{
|
||||||
var userId = await _unitOfWork.UserRepository.GetUserIdByUsernameAsync(User.GetUsername());
|
var userId = await _unitOfWork.UserRepository.GetUserIdByUsernameAsync(User.GetUsername());
|
||||||
return Ok(await _unitOfWork.VolumeRepository.GetVolumeDtoAsync(volumeId, userId));
|
var vol = await _unitOfWork.VolumeRepository.GetVolumeDtoAsync(volumeId, userId);
|
||||||
|
if (vol == null) return NoContent();
|
||||||
|
return Ok(vol);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("chapter")]
|
[HttpGet("chapter")]
|
||||||
public async Task<ActionResult<ChapterDto>> GetChapter(int chapterId)
|
public async Task<ActionResult<ChapterDto>> GetChapter(int chapterId)
|
||||||
{
|
{
|
||||||
var chapter = await _unitOfWork.ChapterRepository.GetChapterDtoAsync(chapterId);
|
var chapter = await _unitOfWork.ChapterRepository.GetChapterDtoAsync(chapterId);
|
||||||
|
if (chapter == null) return NoContent();
|
||||||
return Ok(await _unitOfWork.ChapterRepository.AddChapterModifiers(User.GetUserId(), chapter));
|
return Ok(await _unitOfWork.ChapterRepository.AddChapterModifiers(User.GetUserId(), chapter));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ public interface ISeriesRepository
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<SearchResultGroupDto> SearchSeries(int userId, bool isAdmin, IList<int> libraryIds, string searchQuery);
|
Task<SearchResultGroupDto> SearchSeries(int userId, bool isAdmin, IList<int> libraryIds, string searchQuery);
|
||||||
Task<IEnumerable<Series>> GetSeriesForLibraryIdAsync(int libraryId, SeriesIncludes includes = SeriesIncludes.None);
|
Task<IEnumerable<Series>> GetSeriesForLibraryIdAsync(int libraryId, SeriesIncludes includes = SeriesIncludes.None);
|
||||||
Task<SeriesDto> GetSeriesDtoByIdAsync(int seriesId, int userId);
|
Task<SeriesDto?> GetSeriesDtoByIdAsync(int seriesId, int userId);
|
||||||
Task<Series?> GetSeriesByIdAsync(int seriesId, SeriesIncludes includes = SeriesIncludes.Volumes | SeriesIncludes.Metadata);
|
Task<Series?> GetSeriesByIdAsync(int seriesId, SeriesIncludes includes = SeriesIncludes.Volumes | SeriesIncludes.Metadata);
|
||||||
Task<IList<Series>> GetSeriesByIdsAsync(IList<int> seriesIds);
|
Task<IList<Series>> GetSeriesByIdsAsync(IList<int> seriesIds);
|
||||||
Task<int[]> GetChapterIdsForSeriesAsync(IList<int> seriesIds);
|
Task<int[]> GetChapterIdsForSeriesAsync(IList<int> seriesIds);
|
||||||
@ -442,11 +442,13 @@ public class SeriesRepository : ISeriesRepository
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<SeriesDto> GetSeriesDtoByIdAsync(int seriesId, int userId)
|
public async Task<SeriesDto?> GetSeriesDtoByIdAsync(int seriesId, int userId)
|
||||||
{
|
{
|
||||||
var series = await _context.Series.Where(x => x.Id == seriesId)
|
var series = await _context.Series.Where(x => x.Id == seriesId)
|
||||||
.ProjectTo<SeriesDto>(_mapper.ConfigurationProvider)
|
.ProjectTo<SeriesDto>(_mapper.ConfigurationProvider)
|
||||||
.SingleAsync();
|
.SingleOrDefaultAsync();
|
||||||
|
|
||||||
|
if (series == null) return null;
|
||||||
|
|
||||||
var seriesList = new List<SeriesDto>() {series};
|
var seriesList = new List<SeriesDto>() {series};
|
||||||
await AddSeriesModifiers(userId, seriesList);
|
await AddSeriesModifiers(userId, seriesList);
|
||||||
|
@ -9,6 +9,7 @@ using API.Extensions;
|
|||||||
using API.Services;
|
using API.Services;
|
||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using AutoMapper.QueryableExtensions;
|
using AutoMapper.QueryableExtensions;
|
||||||
|
using Kavita.Common;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
namespace API.Data.Repositories;
|
namespace API.Data.Repositories;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user