initial commit

This commit is contained in:
Barna Csorogi
2015-03-28 23:07:40 +01:00
commit 343bdd5266
14 changed files with 562 additions and 0 deletions

39
transcoder/gzip.go Normal file
View File

@ -0,0 +1,39 @@
package transcoder
import (
"compress/gzip"
"github.com/barnacs/compy/proxy"
)
type Gzip struct {
proxy.Transcoder
SkipGzipped bool
}
func (t *Gzip) Transcode(w *proxy.ResponseWriter, r *proxy.ResponseReader) error {
if t.decompress(r) {
gzr, err := gzip.NewReader(r.Reader)
if err != nil {
return err
}
defer gzr.Close()
r.Reader = gzr
r.Header().Del("Content-Encoding")
w.Header().Del("Content-Encoding")
}
if compress(r) {
gzw := gzip.NewWriter(w.Writer)
defer gzw.Flush()
w.Writer = gzw
w.Header().Set("Content-Encoding", "gzip")
}
return t.Transcoder.Transcode(w, r)
}
func (t *Gzip) decompress(r *proxy.ResponseReader) bool {
return !t.SkipGzipped && r.Header().Get("Content-Encoding") == "gzip"
}
func compress(r *proxy.ResponseReader) bool {
return r.Header().Get("Content-Encoding") == ""
}