package main import ( "net/http" "os" "strings" "github.com/kataras/iris/v12" "github.com/kataras/iris/v12/middleware/accesslog" "github.com/kataras/iris/v12/middleware/recover" "golang.org/x/net/webdav" ) func main() { app := iris.New() app.Logger().SetLevel("debug") app.Use(recover.New()) app.Use(accesslog.New(os.Stdout).Handler) webdavHandler := &webdav.Handler{ FileSystem: webdav.Dir("./"), LockSystem: webdav.NewMemLS(), Logger: func(r *http.Request, err error) { if err != nil { app.Logger().Error(err) } }, } app.HandleMany(strings.Join(iris.WebDAVMethods, " "), "/{p:path}", iris.FromStd(webdavHandler)) app.Listen(":8080", iris.WithoutServerError(iris.ErrServerClosed, iris.ErrURLQuerySemicolon), iris.WithoutPathCorrection, ) } /* Test with cURL or postman: * List files: curl --location --request PROPFIND 'http://localhost:8080' * Get File: curl --location --request GET 'http://localhost:8080/test.txt' * Upload File: curl --location --request PUT 'http://localhost:8080/newfile.txt' \ --header 'Content-Type: text/plain' \ --data-raw 'This is a new file!' * Copy File: curl --location --request COPY 'http://localhost:8080/test.txt' \ --header 'Destination: newdir/test.txt' * Create New Directory: curl --location --request MKCOL 'http://localhost:8080/anewdir/' And e.t.c. */