all repos — homestead @ cb0c1a6f85c4577b242228a7310d137bf461b30f

Code for my website

move style hashing to file layer

Alan Pearce
commit

cb0c1a6f85c4577b242228a7310d137bf461b30f

parent

0ee23f01ab6304fba37c1d2b66b16de9792e285c

1 file changed, 35 insertions(+), 1 deletion(-)

changed files
M internal/storage/file.gointernal/storage/file.go
@@ -2,7 +2,12 @@ package storage
import ( "io" + "strings" "time" + + "gitlab.com/tozd/go/errors" + "go.alanpearce.eu/homestead/internal/buffer" + "go.alanpearce.eu/homestead/internal/builder/template" ) type File struct {
@@ -10,7 +15,8 @@ Path string
ContentType string LastModified time.Time Etag string - Encodings map[string]io.ReadSeeker + StyleHash string + Encodings map[string]*buffer.Buffer } func (f *File) AvailableEncodings() []string {
@@ -21,3 +27,31 @@ }
return encs } + +func (f *File) CalculateStyleHash() (err error) { + buf := f.Encodings["identity"] + if buf == nil { + return errors.New("buffer not initialised") + } + _, err = buf.Seek(0, io.SeekStart) + if err != nil { + return errors.WithMessage(err, "could not seek buffer") + } + + mime, _, _ := strings.Cut(f.ContentType, ";") + switch mime { + case "text/html": + f.StyleHash, err = template.GetHTMLStyleHash(buf) + if err != nil { + return errors.WithMessage(err, "could not calculate HTML style hash") + } + default: + return + } + _, err = buf.Seek(0, io.SeekStart) + if err != nil { + return errors.WithMessage(err, "could not seek buffer") + } + + return +}