Skip to content

Commit

Permalink
Don't unzip files from bindata but send to browser directly
Browse files Browse the repository at this point in the history
  • Loading branch information
lunny committed Dec 23, 2020
1 parent e0c753e commit 0b38ed2
Show file tree
Hide file tree
Showing 10 changed files with 435 additions and 0 deletions.
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ require (
github.com/quasoft/websspi v1.0.0
github.com/sergi/go-diff v1.1.0
github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 // indirect
github.com/shurcooL/httpgzip v0.0.0-20190720172056-320755c1c1b0
github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546
github.com/spf13/viper v1.7.1 // indirect
github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -986,6 +986,8 @@ github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24 h1:pntxY8Ary0t4
github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 h1:bUGsEnyNbVPw06Bs80sCeARAlK8lhwqGyi6UT8ymuGk=
github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
github.com/shurcooL/httpgzip v0.0.0-20190720172056-320755c1c1b0 h1:mj/nMDAwTBiaCqMEs4cYCqF7pO6Np7vhy1D1wcQGz+E=
github.com/shurcooL/httpgzip v0.0.0-20190720172056-320755c1c1b0/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q=
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546 h1:pXY9qYc/MP5zdvqWEUH6SjNiu7VhSjuVFTFiTcphaLU=
Expand Down
29 changes: 29 additions & 0 deletions modules/public/public.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,20 @@
package public

import (
"bytes"
"compress/gzip"
"io"
"log"
"mime"
"net/http"
"path"
"path/filepath"
"strings"

"code.gitea.io/gitea/modules/httpcache"
"code.gitea.io/gitea/modules/setting"

"github.com/shurcooL/httpgzip"
)

// Options represents the available options to configure the macaron handler.
Expand Down Expand Up @@ -157,6 +163,29 @@ func (opts *Options) handle(w http.ResponseWriter, req *http.Request, opt *Optio
return true
}

if _, ok := f.(httpgzip.NotWorthGzipCompressing); !ok {
if g, ok := f.(httpgzip.GzipByter); ok {
w.Header().Set("Content-Encoding", "gzip")
rd := bytes.NewReader(g.GzipBytes())
ctype := mime.TypeByExtension(filepath.Ext(fi.Name()))
if ctype == "" {
// read a chunk to decide between utf-8 text and binary
var buf [512]byte
grd, _ := gzip.NewReader(rd)
n, _ := io.ReadFull(grd, buf[:])
ctype = http.DetectContentType(buf[:n])
_, err := rd.Seek(0, io.SeekStart) // rewind to output whole file
if err != nil {
log.Printf("rd.Seek error: %v\n", err)
return false
}
}
w.Header().Set("Content-Type", ctype)
http.ServeContent(w, req, file, fi.ModTime(), rd)
return true
}
}

http.ServeContent(w, req, file, fi.ModTime(), f)
return true
}
16 changes: 16 additions & 0 deletions vendor/github.com/shurcooL/httpgzip/.travis.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 21 additions & 0 deletions vendor/github.com/shurcooL/httpgzip/LICENSE

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 19 additions & 0 deletions vendor/github.com/shurcooL/httpgzip/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions vendor/github.com/shurcooL/httpgzip/doc.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

226 changes: 226 additions & 0 deletions vendor/github.com/shurcooL/httpgzip/fs.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 0b38ed2

Please sign in to comment.