summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Controllers/MediaController.cs25
-rw-r--r--Util.cs8
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);
diff --git a/Util.cs b/Util.cs
new file mode 100644
index 0000000..9cbccdf
--- /dev/null
+++ b/Util.cs
@@ -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;
+ }
+}