diff options
| author | Jake Mannens <jake@asger.xyz> | 2023-08-28 13:15:40 +1000 |
|---|---|---|
| committer | Jake Mannens <jake@asger.xyz> | 2025-08-20 00:48:43 +1000 |
| commit | 43814fb0143c0cddea903d1d107f69d527fdc559 (patch) | |
| tree | 23e90e87cc7315a0dae73606e66766b1b2f3a47b | |
| parent | 8f258529e94b3c5b741a0315bcd75af24b5a8b5a (diff) | |
Modified media controller to take file metadata and checksums from form content headers
| -rw-r--r-- | Controllers/MediaController.cs | 25 | ||||
| -rw-r--r-- | Util.cs | 8 |
2 files changed, 26 insertions, 7 deletions
diff --git a/Controllers/MediaController.cs b/Controllers/MediaController.cs index b476dec..6e04670 100644 --- a/Controllers/MediaController.cs +++ b/Controllers/MediaController.cs @@ -1,4 +1,5 @@ using HyperBooru.Services; +using HyperBooru.Util; using ImageMagick; using Microsoft.AspNetCore.Mvc; using MimeDetective; @@ -76,12 +77,7 @@ public class MediaController : Controller { } [HttpPost] - public IActionResult Upload( - [FromForm] string? checksum, - [FromForm] DateTime? lastAccessTime, - [FromForm] DateTime? lastWriteTime, - [FromForm] DateTime? createTime) { - + public IActionResult Upload() { if(Request.Form.Files.Count == 0) return BadRequest("No files"); @@ -89,10 +85,25 @@ public class MediaController : Controller { 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(); + media = mediaService.Create( formFile.OpenReadStream(), formFile.FileName, - checksum, + formFile.Headers["X-HyperBooru-Checksum"] + .ElementAtOrDefault(0), lastAccessTime, lastWriteTime, createTime); @@ -0,0 +1,8 @@ +namespace HyperBooru.Util; + +public static class Extensions { + public static DateTime? TryParseDateTimeUtc(this string s) { + bool success = DateTime.TryParse(s, out var dateTime); + return success ? DateTime.SpecifyKind(dateTime, DateTimeKind.Utc) : null; + } +} |
