| // Credits: https://pkg.go.dev/github.com/rclone/[email protected]/cmd/serve/s3 | |
| // Package s3 implements a fake s3 server for alist | |
| package s3 | |
| import "io" | |
| type noOpReadCloser struct{} | |
| type readerWithCloser struct { | |
| io.Reader | |
| closer func() error | |
| } | |
| var _ io.ReadCloser = &readerWithCloser{} | |
| func (d noOpReadCloser) Read(b []byte) (n int, err error) { | |
| return 0, io.EOF | |
| } | |
| func (d noOpReadCloser) Close() error { | |
| return nil | |
| } | |
| func limitReadCloser(rdr io.Reader, closer func() error, sz int64) io.ReadCloser { | |
| return &readerWithCloser{ | |
| Reader: io.LimitReader(rdr, sz), | |
| closer: closer, | |
| } | |
| } | |
| func (rwc *readerWithCloser) Close() error { | |
| if rwc.closer != nil { | |
| return rwc.closer() | |
| } | |
| return nil | |
| } | |