github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/compression/gzip.go (about) 1 package compression 2 3 import ( 4 "compress/gzip" 5 "io" 6 7 "github.com/concourse/baggageclaim" 8 ) 9 10 type gzipCompression struct{} 11 12 func NewGzipCompression() Compression { 13 return &gzipCompression{} 14 } 15 16 func (c *gzipCompression) NewReader(reader io.ReadCloser) (io.ReadCloser, error) { 17 r, err := gzip.NewReader(reader) 18 if err != nil { 19 return nil, err 20 } 21 return &gzipReader{reader: r}, nil 22 } 23 24 func (c *gzipCompression) Encoding() baggageclaim.Encoding { 25 return baggageclaim.GzipEncoding 26 } 27 28 type gzipReader struct { 29 reader *gzip.Reader 30 } 31 32 func (gr *gzipReader) Read(p []byte) (int, error) { 33 return gr.reader.Read(p) 34 } 35 36 func (gr *gzipReader) Close() error { 37 return gr.reader.Close() 38 }