about summary refs log tree commit diff
path: root/tvix/nar-bridge/pkg/http/narinfo_get.go
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2023-10-09T15·23+0200
committerclbot <clbot@tvl.fyi>2023-10-09T22·05+0000
commit28cd4b1a2f98759dc33390db78f328f20f2db515 (patch)
tree880ac973a14c38cb0385330e0c5085f063af096e /tvix/nar-bridge/pkg/http/narinfo_get.go
parent92481825b36f914bc99cbb15d560865d808b2306 (diff)
feat(tvix/nar-bridge): add ToNixNarInfo() r/6758
Convenience function, moves all code converting from a PathInfo struct
to to go-nix's NarInfo.

Change-Id: Idf0dcc38675674563f2dfd3286a4a55fa2a24a82
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9593
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Reviewed-by: Brian McGee <brian@bmcgee.ie>
Diffstat (limited to 'tvix/nar-bridge/pkg/http/narinfo_get.go')
-rw-r--r--tvix/nar-bridge/pkg/http/narinfo_get.go38
1 files changed, 3 insertions, 35 deletions
diff --git a/tvix/nar-bridge/pkg/http/narinfo_get.go b/tvix/nar-bridge/pkg/http/narinfo_get.go
index 93192c03e52e..8338d43676f5 100644
--- a/tvix/nar-bridge/pkg/http/narinfo_get.go
+++ b/tvix/nar-bridge/pkg/http/narinfo_get.go
@@ -8,18 +8,13 @@ import (
 	"io"
 	"io/fs"
 	"net/http"
-	"path"
 	"strings"
 	"sync"
 
-	castorev1pb "code.tvl.fyi/tvix/castore/protos"
 	storev1pb "code.tvl.fyi/tvix/store/protos"
 	"github.com/go-chi/chi/v5"
 	nixhash "github.com/nix-community/go-nix/pkg/hash"
-	"github.com/nix-community/go-nix/pkg/narinfo"
-	"github.com/nix-community/go-nix/pkg/narinfo/signature"
 	"github.com/nix-community/go-nix/pkg/nixbase32"
-	"github.com/nix-community/go-nix/pkg/storepath"
 	log "github.com/sirupsen/logrus"
 	"google.golang.org/grpc/codes"
 	"google.golang.org/grpc/status"
@@ -71,37 +66,10 @@ func renderNarinfo(
 		return nil
 	}
 
-	// convert the signatures from storev1pb signatures to narinfo signatures
-	narinfoSignatures := make([]signature.Signature, 0)
-	for _, pathInfoSignature := range pathInfo.Narinfo.Signatures {
-		narinfoSignatures = append(narinfoSignatures, signature.Signature{
-			Name: pathInfoSignature.GetName(),
-			Data: pathInfoSignature.GetData(),
-		})
-	}
-
-	// extract the name of the node in the pathInfo structure, which will become the output path
-	var nodeName []byte
-	switch v := (pathInfo.GetNode().GetNode()).(type) {
-	case *castorev1pb.Node_File:
-		nodeName = v.File.GetName()
-	case *castorev1pb.Node_Symlink:
-		nodeName = v.Symlink.GetName()
-	case *castorev1pb.Node_Directory:
-		nodeName = v.Directory.GetName()
-	}
-
-	narInfo := narinfo.NarInfo{
-		StorePath:   path.Join(storepath.StoreDir, string(nodeName)),
-		URL:         "nar/" + nixbase32.EncodeToString(narHash.Digest()) + ".nar",
-		Compression: "none", // TODO: implement zstd compression
-		NarHash:     narHash,
-		NarSize:     uint64(pathInfo.Narinfo.NarSize),
-		References:  pathInfo.Narinfo.GetReferenceNames(),
-		Signatures:  narinfoSignatures,
-	}
+	// convert the PathInfo to NARInfo.
+	narInfo, err := ToNixNarInfo(pathInfo)
 
-	// render .narinfo from pathInfo
+	// Write it out to the client.
 	_, err = io.Copy(w, strings.NewReader(narInfo.String()))
 	if err != nil {
 		return fmt.Errorf("unable to write narinfo to client: %w", err)