29 lines
668 B
Go
29 lines
668 B
Go
package main
|
|
|
|
import (
|
|
"git.deuxfleurs.fr/Deuxfleurs/bagage/s3"
|
|
"github.com/minio/minio-go/v7"
|
|
"golang.org/x/net/webdav"
|
|
"log"
|
|
"net/http"
|
|
)
|
|
|
|
type WebDav struct {
|
|
WithConfig *Config
|
|
}
|
|
|
|
func (wd WebDav) WithMC(mc *minio.Client) http.Handler {
|
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
(&webdav.Handler{
|
|
Prefix: wd.WithConfig.DavPath,
|
|
FileSystem: s3.NewS3FS(mc, wd.WithConfig.S3Cache),
|
|
LockSystem: webdav.NewMemLS(),
|
|
Logger: func(r *http.Request, err error) {
|
|
log.Printf("INFO: %s %s %s\n", r.RemoteAddr, r.Method, r.URL)
|
|
if err != nil {
|
|
log.Printf("ERR: %v", err)
|
|
}
|
|
},
|
|
}).ServeHTTP(w, r)
|
|
})
|
|
}
|