Rename blob transforms to match HTTP encoding names.

This commit is contained in:
Catherine
2025-12-01 11:01:21 +00:00
parent e1a2143d22
commit 30bde8c1c4
5 changed files with 29 additions and 25 deletions

View File

@@ -22,8 +22,8 @@ func CollectTar(
appendFile := func(header *tar.Header, data []byte, transform Transform) (err error) {
switch transform {
case Transform_None:
case Transform_Zstandard:
case Transform_Identity:
case Transform_Zstd:
data, err = zstdDecoder.DecodeAll(data, []byte{})
if err != nil {
return err
@@ -53,7 +53,7 @@ func CollectTar(
header.Typeflag = tar.TypeDir
header.Mode = 0755
header.ModTime = manifestMtime
err = appendFile(&header, nil, Transform_None)
err = appendFile(&header, nil, Transform_Identity)
case Type_InlineFile:
header.Typeflag = tar.TypeReg
@@ -79,7 +79,7 @@ func CollectTar(
header.Typeflag = tar.TypeSymlink
header.Mode = 0644
header.ModTime = manifestMtime
err = appendFile(&header, entry.GetData(), Transform_None)
err = appendFile(&header, entry.GetData(), Transform_Identity)
default:
return fmt.Errorf("unexpected entry type")
@@ -95,7 +95,7 @@ func CollectTar(
Typeflag: tar.TypeReg,
Mode: 0644,
ModTime: manifestMtime,
}, []byte(redirects), Transform_None)
}, []byte(redirects), Transform_Identity)
if err != nil {
return err
}
@@ -107,7 +107,7 @@ func CollectTar(
Typeflag: tar.TypeReg,
Mode: 0644,
ModTime: manifestMtime,
}, []byte(headers), Transform_None)
}, []byte(headers), Transform_Identity)
if err != nil {
return err
}

View File

@@ -144,7 +144,7 @@ func DetectContentType(manifest *Manifest) {
for path, entry := range manifest.Contents {
if entry.GetType() == Type_Directory || entry.GetType() == Type_Symlink {
// no Content-Type
} else if entry.GetType() == Type_InlineFile && entry.GetTransform() == Transform_None {
} else if entry.GetType() == Type_InlineFile && entry.GetTransform() == Transform_Identity {
contentType := mime.TypeByExtension(filepath.Ext(path))
if contentType == "" {
contentType = http.DetectContentType(entry.Data[:min(512, len(entry.Data))])
@@ -168,7 +168,7 @@ func CompressFiles(ctx context.Context, manifest *Manifest) {
var originalSize, compressedSize int64
for _, entry := range manifest.Contents {
if entry.GetType() == Type_InlineFile && entry.GetTransform() == Transform_None {
if entry.GetType() == Type_InlineFile && entry.GetTransform() == Transform_Identity {
mtype := getMediaType(entry.GetContentType())
if strings.HasPrefix(mtype, "video/") || strings.HasPrefix(mtype, "audio/") {
continue
@@ -178,7 +178,7 @@ func CompressFiles(ctx context.Context, manifest *Manifest) {
if len(compressedData) < int(*entry.Size) {
entry.Data = compressedData
entry.Size = proto.Int64(int64(len(entry.Data)))
entry.Transform = Transform_Zstandard.Enum()
entry.Transform = Transform_Zstd.Enum()
}
compressedSize += entry.GetSize()
}

View File

@@ -300,11 +300,13 @@ func getPage(w http.ResponseWriter, r *http.Request) error {
acceptedEncodings := parseHTTPEncodings(r.Header.Get("Accept-Encoding"))
negotiatedEncoding := true
switch entry.GetTransform() {
case Transform_None:
if acceptedEncodings.Negotiate("identity") != "identity" {
case Transform_Identity:
switch acceptedEncodings.Negotiate("identity") {
case "identity":
default:
negotiatedEncoding = false
}
case Transform_Zstandard:
case Transform_Zstd:
supported := []string{"zstd", "identity"}
if entry.ContentType == nil {
// If Content-Type is unset, `http.ServeContent` will try to sniff

View File

@@ -81,24 +81,25 @@ func (Type) EnumDescriptor() ([]byte, []int) {
return file_schema_proto_rawDescGZIP(), []int{0}
}
// Transformation names should match HTTP `Accept-Encoding:` header.
type Transform int32
const (
// No transformation.
Transform_None Transform = 0
Transform_Identity Transform = 0
// Zstandard compression.
Transform_Zstandard Transform = 1
Transform_Zstd Transform = 1
)
// Enum value maps for Transform.
var (
Transform_name = map[int32]string{
0: "None",
1: "Zstandard",
0: "Identity",
1: "Zstd",
}
Transform_value = map[string]int32{
"None": 0,
"Zstandard": 1,
"Identity": 0,
"Zstd": 1,
}
)
@@ -207,7 +208,7 @@ func (x *Entry) GetTransform() Transform {
if x != nil && x.Transform != nil {
return *x.Transform
}
return Transform_None
return Transform_Identity
}
func (x *Entry) GetContentType() string {
@@ -614,10 +615,10 @@ const file_schema_proto_rawDesc = "" +
"\n" +
"InlineFile\x10\x02\x12\x10\n" +
"\fExternalFile\x10\x03\x12\v\n" +
"\aSymlink\x10\x04*$\n" +
"\tTransform\x12\b\n" +
"\x04None\x10\x00\x12\r\n" +
"\tZstandard\x10\x01B,Z*codeberg.org/git-pages/git-pages/git_pagesb\beditionsp\xe8\a"
"\aSymlink\x10\x04*#\n" +
"\tTransform\x12\f\n" +
"\bIdentity\x10\x00\x12\b\n" +
"\x04Zstd\x10\x01B,Z*codeberg.org/git-pages/git-pages/git_pagesb\beditionsp\xe8\a"
var (
file_schema_proto_rawDescOnce sync.Once

View File

@@ -15,11 +15,12 @@ enum Type {
Symlink = 4;
}
// Transformation names should match HTTP `Accept-Encoding:` header.
enum Transform {
// No transformation.
None = 0;
Identity = 0;
// Zstandard compression.
Zstandard = 1;
Zstd = 1;
}
message Entry {