alist/server/s3/server.go
itsHenry d0f88bd1cb
feat: s3 server support (#6088 close #5186)
Currently tested: List, Get, Remove
2024-03-02 15:35:10 +08:00

28 lines
726 B
Go

// Credits: https://pkg.go.dev/github.com/rclone/rclone@v1.65.2/cmd/serve/s3
// Package s3 implements a fake s3 server for alist
package s3
import (
"context"
"math/rand"
"net/http"
"github.com/Mikubill/gofakes3"
)
// Make a new S3 Server to serve the remote
func NewServer(ctx context.Context, authpair []string) (h http.Handler, err error) {
var newLogger logger
faker := gofakes3.New(
newBackend(),
// gofakes3.WithHostBucket(!opt.pathBucketMode),
gofakes3.WithLogger(newLogger),
gofakes3.WithRequestID(rand.Uint64()),
gofakes3.WithoutVersioning(),
gofakes3.WithV4Auth(authlistResolver(authpair)),
gofakes3.WithIntegrityCheck(true), // Check Content-MD5 if supplied
)
return faker.Server(), nil
}