Add exceptions to return 400 on save endpoint

This commit is contained in:
Tyler Kenney 2025-05-20 10:43:14 -04:00
parent 04d46b23cc
commit 54c572a83b
2 changed files with 13 additions and 8 deletions

View file

@ -68,10 +68,17 @@ public class KoreaderController : BaseApiController
[HttpPut("{apiKey}/syncs/progress")] [HttpPut("{apiKey}/syncs/progress")]
public async Task<ActionResult<KoreaderProgressUpdateDto>> UpdateProgress(string apiKey, KoreaderBookDto request) public async Task<ActionResult<KoreaderProgressUpdateDto>> UpdateProgress(string apiKey, KoreaderBookDto request)
{ {
var userId = await GetUserId(apiKey); try
await _koreaderService.SaveProgress(request, userId); {
var userId = await GetUserId(apiKey);
await _koreaderService.SaveProgress(request, userId);
return Ok(new KoreaderProgressUpdateDto{ Document = request.Document, Timestamp = DateTime.UtcNow }); return Ok(new KoreaderProgressUpdateDto{ Document = request.Document, Timestamp = DateTime.UtcNow });
}
catch (KavitaException ex)
{
return BadRequest(ex.Message);
}
} }
@ -90,8 +97,6 @@ public class KoreaderController : BaseApiController
{ {
return BadRequest(ex.Message); return BadRequest(ex.Message);
} }
return BadRequest();
} }
private async Task<int> GetUserId(string apiKey) private async Task<int> GetUserId(string apiKey)

View file

@ -41,16 +41,16 @@ public class KoreaderService : IKoreaderService
{ {
_logger.LogDebug("Saving Koreader progress for {UserId}: {KoreaderProgress}", userId, koreaderBookDto.Progress); _logger.LogDebug("Saving Koreader progress for {UserId}: {KoreaderProgress}", userId, koreaderBookDto.Progress);
var file = await _unitOfWork.MangaFileRepository.GetByKoreaderHash(koreaderBookDto.Document); var file = await _unitOfWork.MangaFileRepository.GetByKoreaderHash(koreaderBookDto.Document);
if (file == null) return; if (file == null) throw new KavitaException(await _localizationService.Translate(userId, "file-missing"));
var userProgressDto = await _unitOfWork.AppUserProgressRepository.GetUserProgressDtoAsync(file.ChapterId, userId); var userProgressDto = await _unitOfWork.AppUserProgressRepository.GetUserProgressDtoAsync(file.ChapterId, userId);
if (userProgressDto == null) if (userProgressDto == null)
{ {
var chapterDto = await _unitOfWork.ChapterRepository.GetChapterDtoAsync(file.ChapterId); var chapterDto = await _unitOfWork.ChapterRepository.GetChapterDtoAsync(file.ChapterId);
if (chapterDto == null) return; if (chapterDto == null) throw new KavitaException(await _localizationService.Translate(userId, "chapter-doesnt-exist"));
var volumeDto = await _unitOfWork.VolumeRepository.GetVolumeByIdAsync(chapterDto.VolumeId); var volumeDto = await _unitOfWork.VolumeRepository.GetVolumeByIdAsync(chapterDto.VolumeId);
if (volumeDto == null) return; if (volumeDto == null) throw new KavitaException(await _localizationService.Translate(userId, "volume-doesnt-exist"));
userProgressDto = new ProgressDto() userProgressDto = new ProgressDto()
{ {