Guess mime type if not set

This commit is contained in:
Kieran 2022-03-14 09:40:18 +00:00
parent 80880a18a8
commit 1009ff1e92
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941

View File

@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.AspNetCore.Mvc.ModelBinding; using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.AspNetCore.StaticFiles;
using Newtonsoft.Json; using Newtonsoft.Json;
using VoidCat.Model; using VoidCat.Model;
using VoidCat.Model.Paywall; using VoidCat.Model.Paywall;
@ -49,13 +50,23 @@ namespace VoidCat.Controllers
try try
{ {
var uid = HttpContext.GetUserId(); var uid = HttpContext.GetUserId();
var mime = Request.Headers.GetHeader("V-Content-Type");
var filename = Request.Headers.GetHeader("V-Filename");
if (string.IsNullOrEmpty(mime) && !string.IsNullOrEmpty(filename))
{
if (new FileExtensionContentTypeProvider().TryGetContentType(filename, out var contentType))
{
mime = contentType;
}
}
var meta = new SecretVoidFileMeta() var meta = new SecretVoidFileMeta()
{ {
MimeType = Request.Headers.GetHeader("V-Content-Type"), MimeType = mime,
Name = Request.Headers.GetHeader("V-Filename"), Name = filename,
Description = Request.Headers.GetHeader("V-Description"), Description = Request.Headers.GetHeader("V-Description"),
Digest = Request.Headers.GetHeader("V-Full-Digest"), Digest = Request.Headers.GetHeader("V-Full-Digest"),
Size = (ulong?)Request.ContentLength ?? 0UL, Size = (ulong?) Request.ContentLength ?? 0UL,
Uploader = uid Uploader = uid
}; };
@ -67,7 +78,8 @@ namespace VoidCat.Controllers
if (cli) if (cli)
{ {
var urlBuilder = new UriBuilder(Request.IsHttps ? "https" : "http", Request.Host.Host, Request.Host.Port ?? 80, var urlBuilder = new UriBuilder(Request.IsHttps ? "https" : "http", Request.Host.Host,
Request.Host.Port ?? 80,
$"/d/{vf.Id.ToBase58()}"); $"/d/{vf.Id.ToBase58()}");
return Content(urlBuilder.Uri.ToString(), "text/plain"); return Content(urlBuilder.Uri.ToString(), "text/plain");
@ -229,4 +241,4 @@ namespace VoidCat.Controllers
public StrikePaywallConfig? Strike { get; init; } public StrikePaywallConfig? Strike { get; init; }
} }
} }