mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-05-02 22:21:28 +08:00
✨ 数据同步支持接入第三方云端存储 https://github.com/siyuan-note/siyuan/issues/6446 https://github.com/siyuan-note/siyuan/issues/6426
This commit is contained in:
parent
b31c6d6f26
commit
e80d95997d
@ -184,6 +184,9 @@ func ServeAPI(ginServer *gin.Engine) {
|
||||
ginServer.Handle("POST", "/api/sync/setSyncEnable", model.CheckAuth, setSyncEnable)
|
||||
ginServer.Handle("POST", "/api/sync/setSyncGenerateConflictDoc", model.CheckAuth, setSyncGenerateConflictDoc)
|
||||
ginServer.Handle("POST", "/api/sync/setSyncMode", model.CheckAuth, setSyncMode)
|
||||
ginServer.Handle("POST", "/api/sync/setSyncProvider", model.CheckAuth, setSyncProvider)
|
||||
ginServer.Handle("POST", "/api/sync/setSyncProviderS3", model.CheckAuth, setSyncProviderS3)
|
||||
ginServer.Handle("POST", "/api/sync/setSyncProviderWebDAV", model.CheckAuth, setSyncProviderWebDAV)
|
||||
ginServer.Handle("POST", "/api/sync/setCloudSyncDir", model.CheckAuth, setCloudSyncDir)
|
||||
ginServer.Handle("POST", "/api/sync/createCloudSyncDir", model.CheckAuth, model.CheckReadonly, createCloudSyncDir)
|
||||
ginServer.Handle("POST", "/api/sync/removeCloudSyncDir", model.CheckAuth, model.CheckReadonly, removeCloudSyncDir)
|
||||
|
@ -21,6 +21,7 @@ import (
|
||||
|
||||
"github.com/88250/gulu"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/siyuan-note/siyuan/kernel/conf"
|
||||
"github.com/siyuan-note/siyuan/kernel/model"
|
||||
"github.com/siyuan-note/siyuan/kernel/util"
|
||||
)
|
||||
@ -159,6 +160,95 @@ func setSyncMode(c *gin.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
func setSyncProvider(c *gin.Context) {
|
||||
ret := gulu.Ret.NewResult()
|
||||
defer c.JSON(http.StatusOK, ret)
|
||||
|
||||
arg, ok := util.JsonArg(c, ret)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
provider := int(arg["provider"].(float64))
|
||||
err := model.SetSyncProvider(provider)
|
||||
if nil != err {
|
||||
ret.Code = 1
|
||||
ret.Msg = err.Error()
|
||||
ret.Data = map[string]interface{}{"closeTimeout": 5000}
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func setSyncProviderS3(c *gin.Context) {
|
||||
ret := gulu.Ret.NewResult()
|
||||
defer c.JSON(http.StatusOK, ret)
|
||||
|
||||
arg, ok := util.JsonArg(c, ret)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
s3Arg := arg["s3"].(interface{})
|
||||
data, err := gulu.JSON.MarshalJSON(s3Arg)
|
||||
if nil != err {
|
||||
ret.Code = 1
|
||||
ret.Msg = err.Error()
|
||||
ret.Data = map[string]interface{}{"closeTimeout": 5000}
|
||||
return
|
||||
}
|
||||
|
||||
s3 := &conf.S3{}
|
||||
if err = gulu.JSON.UnmarshalJSON(data, s3); nil != err {
|
||||
ret.Code = 1
|
||||
ret.Msg = err.Error()
|
||||
ret.Data = map[string]interface{}{"closeTimeout": 5000}
|
||||
return
|
||||
}
|
||||
|
||||
err = model.SetSyncProviderS3(s3)
|
||||
if nil != err {
|
||||
ret.Code = 1
|
||||
ret.Msg = err.Error()
|
||||
ret.Data = map[string]interface{}{"closeTimeout": 5000}
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func setSyncProviderWebDAV(c *gin.Context) {
|
||||
ret := gulu.Ret.NewResult()
|
||||
defer c.JSON(http.StatusOK, ret)
|
||||
|
||||
arg, ok := util.JsonArg(c, ret)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
webdavArg := arg["webdav"].(interface{})
|
||||
data, err := gulu.JSON.MarshalJSON(webdavArg)
|
||||
if nil != err {
|
||||
ret.Code = 1
|
||||
ret.Msg = err.Error()
|
||||
ret.Data = map[string]interface{}{"closeTimeout": 5000}
|
||||
return
|
||||
}
|
||||
|
||||
webdav := &conf.WebDAV{}
|
||||
if err = gulu.JSON.UnmarshalJSON(data, webdav); nil != err {
|
||||
ret.Code = 1
|
||||
ret.Msg = err.Error()
|
||||
ret.Data = map[string]interface{}{"closeTimeout": 5000}
|
||||
return
|
||||
}
|
||||
|
||||
err = model.SetSyncProviderWebDAV(webdav)
|
||||
if nil != err {
|
||||
ret.Code = 1
|
||||
ret.Msg = err.Error()
|
||||
ret.Data = map[string]interface{}{"closeTimeout": 5000}
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func setCloudSyncDir(c *gin.Context) {
|
||||
ret := gulu.Ret.NewResult()
|
||||
defer c.JSON(http.StatusOK, ret)
|
||||
|
@ -301,6 +301,33 @@ func SetSyncMode(mode int) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func SetSyncProvider(provider int) (err error) {
|
||||
syncLock.Lock()
|
||||
defer syncLock.Unlock()
|
||||
|
||||
Conf.Sync.Provider = provider
|
||||
Conf.Save()
|
||||
return
|
||||
}
|
||||
|
||||
func SetSyncProviderS3(s3 *conf.S3) (err error) {
|
||||
syncLock.Lock()
|
||||
defer syncLock.Unlock()
|
||||
|
||||
Conf.Sync.S3 = s3
|
||||
Conf.Save()
|
||||
return
|
||||
}
|
||||
|
||||
func SetSyncProviderWebDAV(webdav *conf.WebDAV) (err error) {
|
||||
syncLock.Lock()
|
||||
defer syncLock.Unlock()
|
||||
|
||||
Conf.Sync.WebDAV = webdav
|
||||
Conf.Save()
|
||||
return
|
||||
}
|
||||
|
||||
var syncLock = sync.Mutex{}
|
||||
|
||||
func CreateCloudSyncDir(name string) (err error) {
|
||||
|
Loading…
Reference in New Issue
Block a user