1 files changed, 32 insertions, 0 deletions
diff --git a/Rhea/Controllers/NarInfoController.cs b/Rhea/Controllers/NarInfoController.cs
new file mode 100644
index 0000000..b81b655
--- /dev/null
+++ b/Rhea/Controllers/NarInfoController.cs
@@ -0,0 +1,32 @@
+using Microsoft.AspNetCore.Mvc;
+
+namespace Rhea.Controllers;
+
+[ApiController]
+public class NarInfoController(RheaConfiguration cfg, StoreMetaService storeSvc) : ControllerBase
+{
+ [HttpHead("/{hash}.narinfo")]
+ public async Task CheckNixNarExists(string hash)
+ {
+ var path = await storeSvc.GetStorePathByBaseName(hash);
+ Response.StatusCode = string.IsNullOrWhiteSpace(path) ? 404 : 200;
+ }
+
+ [HttpGet("/{hash}.narinfo")]
+ public async Task<string> GetNixNarInfo(string hash)
+ {
+ var path = await storeSvc.GetStorePathByBaseName(hash);
+
+ return $"""
+ StorePath: {cfg.StorePath}/{path}
+ URL: nar/09d83cyl9dlfkkbspkgkk7bfydj3mvw6r1x98kvc2v8wl2xd8ldy.nar.zst
+ Compression: zstd
+ FileHash: sha256:0yzqbk88qqh0c7dswwcm27y1pxs5a83hga81vjmcs9d331psv1g8
+ FileSize: 48255244
+ NarHash: sha256:09d83cyl9dlfkkbspkgkk7bfydj3mvw6r1x98kvc2v8wl2xd8ldy
+ NarSize: 209581048
+ Sig: cache.nixos.org-1:sRYhPUkDDRCgZDlgPMvXYEgYvX3GF24wT0v6HOUrtB/4g5lZffgRksiSmsth2wKRPlMijKP/yoDkG4NZDJfJCA==
+ CA: fixed:r:sha256:09d83cyl9dlfkkbspkgkk7bfydj3mvw6r1x98kvc2v8wl2xd8ldy
+ """;
+ }
+}
\ No newline at end of file
|