prow/spyglass/gcsartifact.go
func (a *GCSArtifact) ReadAtMost(n int64) ([]byte, error) {
	var reader io.ReadCloser
	var p []byte
	gzipped, err := a.gzipped()
	if err != nil {
		return nil, fmt.Errorf("error checking artifact for gzip compression: %v", err)
	}
	if gzipped {
		reader, err = a.handle.NewReader(a.ctx)
		if err != nil {
			return nil, fmt.Errorf("error getting artifact reader: %v", err)
		}
		defer reader.Close()
		p, err = ioutil.ReadAll(reader) // Must readall for gzipped files
		if err != nil {
			return nil, fmt.Errorf("error reading all from artifact: %v", err)
		}
		artifactSize := int64(len(p))
		readRange := n
		if n > artifactSize {
			readRange = artifactSize
			return p[:readRange], io.EOF
		}
		return p[:readRange], nil

	}
	artifactSize, err := a.Size()
	if err != nil {
		return nil, fmt.Errorf("error getting artifact size: %v", err)
	}
	readRange := n
	var gotEOF bool
	if n > artifactSize {
		gotEOF = true
		readRange = artifactSize
	}
	reader, err = a.handle.NewRangeReader(a.ctx, 0, readRange)
	if err != nil {
		return nil, fmt.Errorf("error getting artifact reader: %v", err)
	}
	defer reader.Close()
	p, err = ioutil.ReadAll(reader)
	if err != nil {
		return nil, fmt.Errorf("error reading all from artifact: %v", err)
	}
	if gotEOF {
		return p, io.EOF
	}
	return p, nil
}
func (a *GCSArtifact) ReadAtMost(n int64) ([]byte, error) {
	var reader io.ReadCloser
	var p []byte
	gzipped, err := a.gzipped()
	if err != nil {
		return nil, fmt.Errorf("error checking artifact for gzip compression: %v", err)
	}
	if gzipped {
		reader, err = a.handle.NewReader(a.ctx)
		if err != nil {
			return nil, fmt.Errorf("error getting artifact reader: %v", err)
		}
		defer reader.Close()
		p, err = ioutil.ReadAll(reader) // Must readall for gzipped files
		if err != nil {
			return nil, fmt.Errorf("error reading all from artifact: %v", err)
		}
		artifactSize := int64(len(p))
		readRange := n
		if n > artifactSize {
			readRange = artifactSize
			return p[:readRange], io.EOF
		}
		return p[:readRange], nil

	}
	artifactSize, err := a.Size()
	if err != nil {
		return nil, fmt.Errorf("error getting artifact size: %v", err)
	}
	readRange := n
	var gotEOF bool
	if n > artifactSize {
		gotEOF = true
		readRange = artifactSize
	}
	reader, err = a.handle.NewRangeReader(a.ctx, 0, readRange)
	if err != nil {
		return nil, fmt.Errorf("error getting artifact reader: %v", err)
	}
	defer reader.Close()
	p, err = ioutil.ReadAll(reader)
	if err != nil {
		return nil, fmt.Errorf("error reading all from artifact: %v", err)
	}
	if gotEOF {
		return p, io.EOF
	}
	return p, nil
}
func ( a * GCSArtifact ) ReadAtMost ( n int64 ) ( [ ] byte , error ) { var reader io . ReadCloser var p [ ] byte gzipped , err := a . gzipped ( ) if err != nil { return nil , fmt . Errorf ( " " , err ) } if gzipped { reader , err = a . handle . NewReader ( a . ctx ) if err != nil { return nil , fmt . Errorf ( " " , err ) } defer reader . Close ( ) p , err = ioutil . ReadAll ( reader ) // Must readall for gzipped files if err != nil { return nil , fmt . Errorf ( " " , err ) } artifactSize := int64 ( len ( p ) ) readRange := n if n > artifactSize { readRange = artifactSize return p [ : readRange ] , io . EOF } return p [ : readRange ] , nil } artifactSize , err := a . Size ( ) if err != nil { return nil , fmt . Errorf ( " " , err ) } readRange := n var gotEOF bool if n > artifactSize { gotEOF = true readRange = artifactSize } reader , err = a . handle . NewRangeReader ( a . ctx , 0 , readRange ) if err != nil { return nil , fmt . Errorf ( " " , err ) } defer reader . Close ( ) p , err = ioutil . ReadAll ( reader ) if err != nil { return nil , fmt . Errorf ( " " , err ) } if gotEOF { return p , io . EOF } return p , nil }
// ReadAtMost reads at most n bytes from a file in GCS. If the file is compressed (gzip) in GCS, n bytes
// of gzipped content will be downloaded and decompressed into potentially GREATER than n bytes of content.
ReadAtMost reads at most n bytes from a file in GCS . If the file is compressed ( gzip ) in GCS n bytes of gzipped content will be downloaded and decompressed into potentially GREATER than n bytes of content .