fork of whitequark.org/git-pages with mods for tangled

Rename blob transforms to match HTTP encoding names.

+6 -6
src/collect.go
··· 22 22 23 23 appendFile := func(header *tar.Header, data []byte, transform Transform) (err error) { 24 24 switch transform { 25 - case Transform_None: 26 - case Transform_Zstandard: 25 + case Transform_Identity: 26 + case Transform_Zstd: 27 27 data, err = zstdDecoder.DecodeAll(data, []byte{}) 28 28 if err != nil { 29 29 return err ··· 53 53 header.Typeflag = tar.TypeDir 54 54 header.Mode = 0755 55 55 header.ModTime = manifestMtime 56 - err = appendFile(&header, nil, Transform_None) 56 + err = appendFile(&header, nil, Transform_Identity) 57 57 58 58 case Type_InlineFile: 59 59 header.Typeflag = tar.TypeReg ··· 79 79 header.Typeflag = tar.TypeSymlink 80 80 header.Mode = 0644 81 81 header.ModTime = manifestMtime 82 - err = appendFile(&header, entry.GetData(), Transform_None) 82 + err = appendFile(&header, entry.GetData(), Transform_Identity) 83 83 84 84 default: 85 85 return fmt.Errorf("unexpected entry type") ··· 95 95 Typeflag: tar.TypeReg, 96 96 Mode: 0644, 97 97 ModTime: manifestMtime, 98 - }, []byte(redirects), Transform_None) 98 + }, []byte(redirects), Transform_Identity) 99 99 if err != nil { 100 100 return err 101 101 } ··· 107 107 Typeflag: tar.TypeReg, 108 108 Mode: 0644, 109 109 ModTime: manifestMtime, 110 - }, []byte(headers), Transform_None) 110 + }, []byte(headers), Transform_Identity) 111 111 if err != nil { 112 112 return err 113 113 }
+3 -3
src/manifest.go
··· 144 144 for path, entry := range manifest.Contents { 145 145 if entry.GetType() == Type_Directory || entry.GetType() == Type_Symlink { 146 146 // no Content-Type 147 - } else if entry.GetType() == Type_InlineFile && entry.GetTransform() == Transform_None { 147 + } else if entry.GetType() == Type_InlineFile && entry.GetTransform() == Transform_Identity { 148 148 contentType := mime.TypeByExtension(filepath.Ext(path)) 149 149 if contentType == "" { 150 150 contentType = http.DetectContentType(entry.Data[:min(512, len(entry.Data))]) ··· 168 168 169 169 var originalSize, compressedSize int64 170 170 for _, entry := range manifest.Contents { 171 - if entry.GetType() == Type_InlineFile && entry.GetTransform() == Transform_None { 171 + if entry.GetType() == Type_InlineFile && entry.GetTransform() == Transform_Identity { 172 172 mtype := getMediaType(entry.GetContentType()) 173 173 if strings.HasPrefix(mtype, "video/") || strings.HasPrefix(mtype, "audio/") { 174 174 continue ··· 178 178 if len(compressedData) < int(*entry.Size) { 179 179 entry.Data = compressedData 180 180 entry.Size = proto.Int64(int64(len(entry.Data))) 181 - entry.Transform = Transform_Zstandard.Enum() 181 + entry.Transform = Transform_Zstd.Enum() 182 182 } 183 183 compressedSize += entry.GetSize() 184 184 }
+5 -3
src/pages.go
··· 300 300 acceptedEncodings := parseHTTPEncodings(r.Header.Get("Accept-Encoding")) 301 301 negotiatedEncoding := true 302 302 switch entry.GetTransform() { 303 - case Transform_None: 304 - if acceptedEncodings.Negotiate("identity") != "identity" { 303 + case Transform_Identity: 304 + switch acceptedEncodings.Negotiate("identity") { 305 + case "identity": 306 + default: 305 307 negotiatedEncoding = false 306 308 } 307 - case Transform_Zstandard: 309 + case Transform_Zstd: 308 310 supported := []string{"zstd", "identity"} 309 311 if entry.ContentType == nil { 310 312 // If Content-Type is unset, `http.ServeContent` will try to sniff
+12 -11
src/schema.pb.go
··· 81 81 return file_schema_proto_rawDescGZIP(), []int{0} 82 82 } 83 83 84 + // Transformation names should match HTTP `Accept-Encoding:` header. 84 85 type Transform int32 85 86 86 87 const ( 87 88 // No transformation. 88 - Transform_None Transform = 0 89 + Transform_Identity Transform = 0 89 90 // Zstandard compression. 90 - Transform_Zstandard Transform = 1 91 + Transform_Zstd Transform = 1 91 92 ) 92 93 93 94 // Enum value maps for Transform. 94 95 var ( 95 96 Transform_name = map[int32]string{ 96 - 0: "None", 97 - 1: "Zstandard", 97 + 0: "Identity", 98 + 1: "Zstd", 98 99 } 99 100 Transform_value = map[string]int32{ 100 - "None": 0, 101 - "Zstandard": 1, 101 + "Identity": 0, 102 + "Zstd": 1, 102 103 } 103 104 ) 104 105 ··· 207 208 if x != nil && x.Transform != nil { 208 209 return *x.Transform 209 210 } 210 - return Transform_None 211 + return Transform_Identity 211 212 } 212 213 213 214 func (x *Entry) GetContentType() string { ··· 614 615 "\n" + 615 616 "InlineFile\x10\x02\x12\x10\n" + 616 617 "\fExternalFile\x10\x03\x12\v\n" + 617 - "\aSymlink\x10\x04*$\n" + 618 - "\tTransform\x12\b\n" + 619 - "\x04None\x10\x00\x12\r\n" + 620 - "\tZstandard\x10\x01B,Z*codeberg.org/git-pages/git-pages/git_pagesb\beditionsp\xe8\a" 618 + "\aSymlink\x10\x04*#\n" + 619 + "\tTransform\x12\f\n" + 620 + "\bIdentity\x10\x00\x12\b\n" + 621 + "\x04Zstd\x10\x01B,Z*codeberg.org/git-pages/git-pages/git_pagesb\beditionsp\xe8\a" 621 622 622 623 var ( 623 624 file_schema_proto_rawDescOnce sync.Once
+3 -2
src/schema.proto
··· 15 15 Symlink = 4; 16 16 } 17 17 18 + // Transformation names should match HTTP `Accept-Encoding:` header. 18 19 enum Transform { 19 20 // No transformation. 20 - None = 0; 21 + Identity = 0; 21 22 // Zstandard compression. 22 - Zstandard = 1; 23 + Zstd = 1; 23 24 } 24 25 25 26 message Entry {