Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions SDMetaUI/Controllers/ImagesController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public static IResult GetThumb(
string physicalPath = Base32Decode(path);
if (fileSystem.File.Exists(physicalPath))
{
EnableCaching(httpResponse);
var fileInfo = fileSystem.FileInfo.New(physicalPath);
var thumbPath = thumbnailService.GetOrGenerateThumbnail(fileInfo.FullName);
httpResponse.Headers.LastModified = fileInfo.LastWriteTimeUtc.ToString("R");
Expand Down Expand Up @@ -46,6 +47,7 @@ public static IResult GetFull(
string physicalPath = Base32Decode(path);
if (fileSystem.File.Exists(physicalPath))
{
EnableCaching(httpResponse);
httpResponse.Headers.LastModified = fileSystem.FileInfo.New(physicalPath).LastWriteTimeUtc.ToString("R");
return Results.File(physicalPath, "image/png");
}
Expand All @@ -66,5 +68,10 @@ private static string Base32Decode(string base32EncodedData)
var base32EncodedBytes = Base32Encoding.ToBytes(base32EncodedData);
return System.Text.Encoding.UTF8.GetString(base32EncodedBytes);
}

private static void EnableCaching(HttpResponse httpResponse)
{
httpResponse.Headers.CacheControl = "public, max-age=31536000, immutable";
}
}
}
46 changes: 24 additions & 22 deletions SDMetaUI/Models/ImageFileViewModel.cs
Original file line number Diff line number Diff line change
@@ -1,28 +1,30 @@
namespace SDMetaUI.Models
{
public class ImageFileViewModel
{
private readonly Func<string, string> func;
public class ImageFileViewModel
{
private readonly Func<string, string> func;
private readonly string version;

public ImageFileViewModel(string fileName, string fullPromptHash, Func<string, string> func)
{
FileName = fileName;
FullPromptHash = fullPromptHash;
this.func = func;
this.EncodedFileName = new(() => Base32Encode(this.FileName));
}
public string FileName { get; }
public string ThumbnailUrl => $"/images/thumb/{EncodedFileName.Value}";
public string ImageUrl => $"/images/full/{EncodedFileName.Value}/{func(this.FileName)}";
public string FullPromptHash { get; }
public IList<ImageFileViewModel>? SubItems { get; set; }
public ImageFileViewModel(string fileName, string fullPromptHash, string version, Func<string, string> func)
{
FileName = fileName;
FullPromptHash = fullPromptHash;
this.version = version;
this.func = func;
this.EncodedFileName = new(() => Base32Encode(this.FileName));
}
public string FileName { get; }
public string ThumbnailUrl => $"/images/thumb/{EncodedFileName.Value}?v={version}";
public string ImageUrl => $"/images/full/{EncodedFileName.Value}/{func(this.FileName)}?v={version}";
public string FullPromptHash { get; }
public IList<ImageFileViewModel>? SubItems { get; set; }

private readonly Lazy<string> EncodedFileName;
private readonly Lazy<string> EncodedFileName;

private static string Base32Encode(string plainText)
{
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
return Base32Encoding.ToString(plainTextBytes);
}
}
private static string Base32Encode(string plainText)
{
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
return Base32Encoding.ToString(plainTextBytes);
}
}
}
15 changes: 8 additions & 7 deletions SDMetaUI/Models/ImageFileViewModelBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@

namespace SDMetaUI.Models
{
public class ImageFileViewModelBuilder(IFileSystem fileSystem)
{
public ImageFileViewModel BuildModel(ImageFileSummary p)
{
return new ImageFileViewModel(p.FileName, p.FullPromptHash ?? "", fileSystem.Path.GetFileName);
}
}
public class ImageFileViewModelBuilder(IFileSystem fileSystem)
{
public ImageFileViewModel BuildModel(ImageFileSummary p)
{
var lastWriteTicks = fileSystem.FileInfo.New(p.FileName).LastWriteTimeUtc.Ticks.ToString();
return new ImageFileViewModel(p.FileName, p.FullPromptHash ?? "", lastWriteTicks, fileSystem.Path.GetFileName);
}
}
}
Loading