// 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 | |
} | |