alist/drivers/webdav/webdav.go

40 lines
1008 B
Go
Raw Normal View History

2021-12-30 13:39:17 +00:00
package webdav
import (
"github.com/Xhofe/alist/drivers/base"
2022-04-04 12:55:22 +00:00
"github.com/Xhofe/alist/drivers/webdav/odrvcookie"
2021-12-30 13:39:17 +00:00
"github.com/Xhofe/alist/model"
"github.com/Xhofe/alist/utils"
2022-04-04 12:55:22 +00:00
log "github.com/sirupsen/logrus"
2021-12-30 13:39:17 +00:00
"github.com/studio-b12/gowebdav"
2022-04-04 12:55:22 +00:00
"net/http"
2021-12-30 13:39:17 +00:00
"strings"
)
func (driver WebDav) NewClient(account *model.Account) *gowebdav.Client {
2022-04-04 12:55:22 +00:00
c := gowebdav.NewClient(account.SiteUrl, account.Username, account.Password)
if isSharePoint(account) {
cookie, err := odrvcookie.GetCookie(account.Username, account.Password, account.SiteUrl)
log.Debugln(cookie, err)
if err == nil {
log.Debugln("set interceptor")
2022-04-04 12:55:22 +00:00
c.SetInterceptor(func(method string, rq *http.Request) {
rq.Header.Del("Authorization")
rq.Header.Set("Cookie", cookie)
log.Debugf("sp webdav req: %+v", rq)
2022-04-04 12:55:22 +00:00
})
}
}
return c
2021-12-30 13:39:17 +00:00
}
func (driver WebDav) WebDavPath(path string) string {
path = utils.ParsePath(path)
path = strings.TrimPrefix(path, "/")
return path
}
func init() {
base.RegisterDriver(&WebDav{})
}