mirror of
https://github.com/mickael-kerjean/filestash.git
synced 2025-10-30 01:26:43 +08:00
66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
package model
|
|
|
|
import (
|
|
"fmt"
|
|
. "github.com/mickael-kerjean/nuage/server/common"
|
|
"github.com/mickael-kerjean/nuage/server/model/backend"
|
|
)
|
|
|
|
func NewBackend(ctx *App, conn map[string]string) (IBackend, error) {
|
|
isAllowed := false
|
|
for i := range ctx.Config.Connections {
|
|
if ctx.Config.Connections[i].Type == conn["type"] {
|
|
if ctx.Config.Connections[i].Hostname == nil {
|
|
isAllowed = true
|
|
break;
|
|
}else if *ctx.Config.Connections[i].Hostname == conn["hostname"] {
|
|
isAllowed = true
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if isAllowed == false {
|
|
return backend.NewNothing(conn, ctx)
|
|
}
|
|
|
|
switch conn["type"] {
|
|
case "webdav":
|
|
return backend.NewWebDav(conn, ctx)
|
|
case "ftp":
|
|
return backend.NewFtp(conn, ctx)
|
|
case "sftp":
|
|
return backend.NewSftp(conn, ctx)
|
|
case "git":
|
|
return backend.NewGit(conn, ctx)
|
|
case "s3":
|
|
return backend.NewS3(conn, ctx)
|
|
case "dropbox":
|
|
return backend.NewDropbox(conn, ctx)
|
|
case "gdrive":
|
|
return backend.NewGDrive(conn, ctx)
|
|
case "custombackend":
|
|
return backend.NewCustomBackend(conn, ctx)
|
|
default:
|
|
return backend.NewNothing(conn, ctx)
|
|
}
|
|
return nil, NewError("Invalid backend type", 501)
|
|
}
|
|
|
|
func GetHome(b IBackend) (string, error) {
|
|
if obj, ok := b.(interface{ Home() (string, error) }); ok {
|
|
return obj.Home()
|
|
}
|
|
|
|
_, err := b.Ls("/")
|
|
return "", err
|
|
}
|
|
|
|
func MapStringInterfaceToMapStringString(m map[string]interface{}) map[string]string {
|
|
res := make(map[string]string)
|
|
for key, value := range m {
|
|
res[key] = fmt.Sprintf("%v", value)
|
|
}
|
|
return res
|
|
}
|