package readers

import "io"

// LimitedReadCloser adds io.Closer to io.LimitedReader.  Create one with NewLimitedReadCloser
type LimitedReadCloser struct {
	*io.LimitedReader
	io.Closer
}

// NewLimitedReadCloser returns a LimitedReadCloser wrapping rc to
// limit it to reading limit bytes. If limit < 0 then it does not
// wrap rc, it just returns it.
func NewLimitedReadCloser(rc io.ReadCloser, limit int64) (lrc io.ReadCloser) {
	if limit < 0 {
		return rc
	}
	return &LimitedReadCloser{
		LimitedReader: &io.LimitedReader{R: rc, N: limit},
		Closer:        rc,
	}
}