diff --git a/src/collect.go b/src/collect.go index 64e7175..b76cec5 100644 --- a/src/collect.go +++ b/src/collect.go @@ -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 } diff --git a/src/manifest.go b/src/manifest.go index c4daeb4..e3a3087 100644 --- a/src/manifest.go +++ b/src/manifest.go @@ -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() } diff --git a/src/pages.go b/src/pages.go index 1f730d4..45341d3 100644 --- a/src/pages.go +++ b/src/pages.go @@ -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 diff --git a/src/schema.pb.go b/src/schema.pb.go index 2bf2e26..e50719d 100644 --- a/src/schema.pb.go +++ b/src/schema.pb.go @@ -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 diff --git a/src/schema.proto b/src/schema.proto index bbdf3f1..cf191d1 100644 --- a/src/schema.proto +++ b/src/schema.proto @@ -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 {