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 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 """; } }