|
|
@ -10,54 +10,40 @@ import ( |
|
|
|
|
|
|
|
/* |
|
|
|
* Default more not to gzip since gzip can be done on client side. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
func IsGzippable(ext, mtype string) bool { |
|
|
|
if strings.HasPrefix(mtype, "text/"){ |
|
|
|
return true |
|
|
|
} |
|
|
|
if ext == ".zip" { |
|
|
|
return false |
|
|
|
} |
|
|
|
if ext == ".rar" { |
|
|
|
return false |
|
|
|
} |
|
|
|
if ext == ".gz" { |
|
|
|
return false |
|
|
|
} |
|
|
|
if ext == ".pdf" { |
|
|
|
if strings.HasPrefix(mtype, "text/") { |
|
|
|
return true |
|
|
|
} |
|
|
|
if ext == ".css" { |
|
|
|
return true |
|
|
|
} |
|
|
|
if ext == ".js" { |
|
|
|
switch ext { |
|
|
|
case ".zip", ".rar", ".gz", ".bz2", ".xz": |
|
|
|
return false |
|
|
|
case ".pdf", ".txt", ".html", ".css", ".js", ".json": |
|
|
|
return true |
|
|
|
} |
|
|
|
if ext == ".json" { |
|
|
|
return true |
|
|
|
} |
|
|
|
if strings.HasPrefix(mtype, "application/") { |
|
|
|
if strings.HasSuffix(mtype, "xml") { |
|
|
|
return true |
|
|
|
} |
|
|
|
if strings.HasSuffix(mtype, "script") { |
|
|
|
if strings.HasSuffix(mtype, "xml") || |
|
|
|
strings.HasSuffix(mtype, "script") { |
|
|
|
return true |
|
|
|
} |
|
|
|
} |
|
|
|
return false |
|
|
|
} |
|
|
|
func GzipData(input []byte) []byte { |
|
|
|
|
|
|
|
func GzipData(input []byte) ([]byte, error) { |
|
|
|
buf := new(bytes.Buffer) |
|
|
|
w, _ := gzip.NewWriterLevel(buf, flate.BestCompression) |
|
|
|
if _, err := w.Write(input); err != nil { |
|
|
|
println("error compressing data:", err) |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
if err := w.Close(); err != nil { |
|
|
|
println("error closing compressed data:", err) |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
return buf.Bytes() |
|
|
|
return buf.Bytes(), nil |
|
|
|
} |
|
|
|
func UnGzipData(input []byte) []byte { |
|
|
|
func UnGzipData(input []byte) ([]byte, error) { |
|
|
|
buf := bytes.NewBuffer(input) |
|
|
|
r, _ := gzip.NewReader(buf) |
|
|
|
defer r.Close() |
|
|
@ -65,5 +51,5 @@ func UnGzipData(input []byte) []byte { |
|
|
|
if err != nil { |
|
|
|
println("error uncompressing data:", err) |
|
|
|
} |
|
|
|
return output |
|
|
|
return output, err |
|
|
|
} |