From 54c572a83b78698e198070c8722084cd7cf4040c Mon Sep 17 00:00:00 2001 From: Tyler Kenney Date: Tue, 20 May 2025 10:43:14 -0400 Subject: [PATCH] Add exceptions to return 400 on save endpoint --- API/Controllers/KoreaderController.cs | 15 ++++++++++----- API/Services/KoreaderService.cs | 6 +++--- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/API/Controllers/KoreaderController.cs b/API/Controllers/KoreaderController.cs index 8ad9ca0e5..895419629 100644 --- a/API/Controllers/KoreaderController.cs +++ b/API/Controllers/KoreaderController.cs @@ -68,10 +68,17 @@ public class KoreaderController : BaseApiController [HttpPut("{apiKey}/syncs/progress")] public async Task> UpdateProgress(string apiKey, KoreaderBookDto request) { - var userId = await GetUserId(apiKey); - await _koreaderService.SaveProgress(request, userId); + try + { + 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(); } private async Task GetUserId(string apiKey) diff --git a/API/Services/KoreaderService.cs b/API/Services/KoreaderService.cs index fbb51e2ac..a460cff14 100644 --- a/API/Services/KoreaderService.cs +++ b/API/Services/KoreaderService.cs @@ -41,16 +41,16 @@ public class KoreaderService : IKoreaderService { _logger.LogDebug("Saving Koreader progress for {UserId}: {KoreaderProgress}", userId, koreaderBookDto.Progress); 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); if (userProgressDto == null) { 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); - if (volumeDto == null) return; + if (volumeDto == null) throw new KavitaException(await _localizationService.Translate(userId, "volume-doesnt-exist")); userProgressDto = new ProgressDto() {