1
0
mirror of https://github.com/astaxie/beego.git synced 2024-12-22 20:50:49 +00:00

Update router.go

This commit is contained in:
Francois 2013-12-14 20:35:57 +02:00
parent 02eacb8e95
commit 9995168f9a

View File

@ -473,7 +473,39 @@ func (p *ControllerRegistor) ServeHTTP(rw http.ResponseWriter, r *http.Request)
middleware.Exception("403", rw, r, "403 Forbidden")
goto Admin
}
http.ServeFile(w, r, file)
//This block obtained from (https://github.com/smithfox/beego) - it should probably get merged into astaxie/beego after a pull request
isStaticFileToCompress := false
if StaticExtensionsToGzip != nil && len(StaticExtensionsToGzip) > 0 {
for _, statExtension := range StaticExtensionsToGzip {
if strings.HasSuffix(strings.ToLower(file), strings.ToLower(statExtension)) {
isStaticFileToCompress = true
break
}
}
}
if isStaticFileToCompress {
if EnableGzip {
w.contentEncoding = GetAcceptEncodingZip(r)
}
memzipfile, err := OpenMemZipFile(file, w.contentEncoding)
if err != nil {
return
}
w.InitHeadContent(finfo.Size())
if strings.HasSuffix(file, ".mustache") {
w.Header().Set("Content-Type", "text/html; charset=utf-8") //FIXME: hardcode
}
http.ServeContent(w, r, file, finfo.ModTime(), memzipfile)
} else {
http.ServeFile(w, r, file)
}
w.started = true
goto Admin
}
@ -901,6 +933,7 @@ type responseWriter struct {
writer http.ResponseWriter
started bool
status int
contentEncoding string
}
// Header returns the header map that will be sent by WriteHeader.
@ -908,6 +941,16 @@ func (w *responseWriter) Header() http.Header {
return w.writer.Header()
}
func (w *responseWriter) InitHeadContent(contentlength int64) {
if w.contentEncoding == "gzip" {
w.Header().Set("Content-Encoding", "gzip")
} else if w.contentEncoding == "deflate" {
w.Header().Set("Content-Encoding", "deflate")
} else {
w.Header().Set("Content-Length", strconv.FormatInt(contentlength, 10))
}
}
// Write writes the data to the connection as part of an HTTP reply,
// and sets `started` to true
func (w *responseWriter) Write(p []byte) (int, error) {