diff options
| author | Jake Mannens <jake@asger.xyz> | 2026-05-29 22:35:18 +1000 |
|---|---|---|
| committer | Jake Mannens <jake@asger.xyz> | 2026-05-30 03:38:05 +1000 |
| commit | c3e9d39034e5afc3f2c3a12c8c7682eabe360b7d (patch) | |
| tree | 73c5f43ec246f700a164ef700956b9d82b95f594 /Controllers/MediaController.cs | |
| parent | cfd9959de69f9ab52e846e8acd232dc30d20aa27 (diff) | |
Modified controller endpoints to throw exceptions instead of returning HTTP responses on error
Diffstat (limited to 'Controllers/MediaController.cs')
| -rw-r--r-- | Controllers/MediaController.cs | 106 |
1 files changed, 48 insertions, 58 deletions
diff --git a/Controllers/MediaController.cs b/Controllers/MediaController.cs index 6a9e1fc..248765a 100644 --- a/Controllers/MediaController.cs +++ b/Controllers/MediaController.cs @@ -39,7 +39,7 @@ public class MediaController : Controller { .Include(m => m.CurrentUploadedFile) .First(m => m.Guid == mediaId); if(media is null) - return NotFound(); + throw new ObjectNotFoundException([ mediaId ]); // Check if the requested media item is a HEIC image and if it is, convert it // otherwise, return the original file content, unaltered @@ -68,14 +68,8 @@ public class MediaController : Controller { [FromQuery(Name = "w")] int? width, [FromQuery(Name = "h")] int? height) { - try { - var thumb = mediaService.GetThumbnail(mediaId, width, height); - return new FileStreamResult(thumb, "image/jpeg"); - } catch(ThumbnailException e) { - return BadRequest(e.Message); - } catch(ObjectNotFoundException e) { - return NotFound(e.Message); - } + var thumb = mediaService.GetThumbnail(mediaId, width, height); + return new FileStreamResult(thumb, "image/jpeg"); } [HttpDelete("{mediaId}")] @@ -86,65 +80,61 @@ public class MediaController : Controller { [HttpPost] public IActionResult Upload() { if(Request.Form.Files.Count == 0) - return BadRequest("No files"); + throw new ApiModels.ArgumentException("No files"); Media media = new(); foreach(var formFile in Request.Form.Files) { - try { - // Parse timestamps from headers - DateTime? lastAccessTime = - formFile.Headers["X-HyperBooru-LastAccessTime"] - .ElementAtOrDefault(0)? - .TryParseDateTimeUtc(); - DateTime? lastWriteTime = - formFile.Headers["X-HyperBooru-LastWriteTime"] - .ElementAtOrDefault(0)? - .TryParseDateTimeUtc(); - DateTime? createTime = - formFile.Headers["X-HyperBooru-CreateTime"] - .ElementAtOrDefault(0)? - .TryParseDateTimeUtc(); + // Parse timestamps from headers + DateTime? lastAccessTime = + formFile.Headers["X-HyperBooru-LastAccessTime"] + .ElementAtOrDefault(0)? + .TryParseDateTimeUtc(); + DateTime? lastWriteTime = + formFile.Headers["X-HyperBooru-LastWriteTime"] + .ElementAtOrDefault(0)? + .TryParseDateTimeUtc(); + DateTime? createTime = + formFile.Headers["X-HyperBooru-CreateTime"] + .ElementAtOrDefault(0)? + .TryParseDateTimeUtc(); - // Parse original path from headers - string? path = - formFile.Headers["X-HyperBooru-Path"] - .ElementAtOrDefault(0); + // Parse original path from headers + string? path = + formFile.Headers["X-HyperBooru-Path"] + .ElementAtOrDefault(0); - object? pathType = null; - string? pathTypeString = - formFile.Headers["X-HyperBooru-PathType"] - .ElementAtOrDefault(0); - Enum.TryParse(typeof(PathType), pathTypeString, true, out pathType); + object? pathType = null; + string? pathTypeString = + formFile.Headers["X-HyperBooru-PathType"] + .ElementAtOrDefault(0); + Enum.TryParse(typeof(PathType), pathTypeString, true, out pathType); - // Parse tag IDs from headers - Guid[]? tagIds = formFile.Headers["X-HyperBooru-Tags"] - .ElementAtOrDefault(0)? - .Split(',') - .Select(t => Guid.Parse(t)) - .ToArray(); + // Parse tag IDs from headers + Guid[]? tagIds = formFile.Headers["X-HyperBooru-Tags"] + .ElementAtOrDefault(0)? + .Split(',') + .Select(t => Guid.Parse(t)) + .ToArray(); - media = mediaService.Create( - formFile.OpenReadStream(), - formFile.FileName, - formFile.Headers["X-HyperBooru-Checksum"] - .ElementAtOrDefault(0), - lastAccessTime, - lastWriteTime, - createTime, - path, - (PathType?) pathType, - tagIds); + media = mediaService.Create( + formFile.OpenReadStream(), + formFile.FileName, + formFile.Headers["X-HyperBooru-Checksum"] + .ElementAtOrDefault(0), + lastAccessTime, + lastWriteTime, + createTime, + path, + (PathType?) pathType, + tagIds); - // Return the GUID of the new media object if requested - bool returnMetadataParsed = bool.TryParse( - formFile.Headers["X-HyperBooru-ReturnMediaId"], out var returnMetadata); + // Return the GUID of the new media object if requested + bool returnMetadataParsed = bool.TryParse( + formFile.Headers["X-HyperBooru-ReturnMediaId"], out var returnMetadata); - if(returnMetadataParsed && returnMetadata) - return Content(media.Guid.ToString()); - } catch(MediaCreateException e) { - return BadRequest(e.Message); - } + if(returnMetadataParsed && returnMetadata) + return Content(media.Guid.ToString()); } if(Request.Form.Files.Count == 1) |
