CasaOS/route/v1/share_directory.go
a624669980 2c1ca2b095 暂存
2021-09-27 14:17:36 +08:00

145 lines
4.8 KiB
Go

package v1
import (
"github.com/IceWhaleTech/CasaOS/model"
"github.com/IceWhaleTech/CasaOS/pkg/utils/oasis_err"
"github.com/IceWhaleTech/CasaOS/service"
model2 "github.com/IceWhaleTech/CasaOS/service/model"
"github.com/gin-gonic/gin"
"net/http"
"strconv"
)
// @Summary 获取列表
// @Produce application/json
// @Accept application/json
// @Tags share
// @Security ApiKeyAuth
// @Success 200 {string} string "ok"
// @Router /share/list [get]
func GetShareDirList(c *gin.Context) {
list := service.MyService.ShareDirectory().List(true)
c.JSON(http.StatusOK, model.Result{Success: oasis_err.SUCCESS, Message: oasis_err.GetMsg(oasis_err.SUCCESS), Data: list})
}
// @Summary 添加文件共享
// @Produce application/json
// @Accept multipart/form-data
// @Tags share
// @Security ApiKeyAuth
// @Param path formData string true "要分享的文件路径"
// @Param name formData string true "名称"
// @Param comment formData string true "描述"
// @Param read_only formData bool false "是否只读"
// @Param writeable formData bool false "是否可写"
// @Param browseable formData bool false "是否可浏览"
// @Param user formData string false "用户"
// @Success 200 {string} string "ok"
// @Router /share/add [post]
func PostShareDirAdd(c *gin.Context) {
name := c.PostForm("name")
comment := c.PostForm("comment")
path := c.PostForm("path")
readOnly, _ := strconv.ParseBool(c.DefaultPostForm("read_only", "false"))
writeable, _ := strconv.ParseBool(c.DefaultPostForm("writeable", "true"))
browse, _ := strconv.ParseBool(c.DefaultPostForm("browseable", "true"))
user := c.PostForm("user")
if len(name) == 0 || len(comment) == 0 || len(path) == 0 {
c.JSON(http.StatusOK, model.Result{Success: oasis_err.INVALID_PARAMS, Message: oasis_err.GetMsg(oasis_err.INVALID_PARAMS)})
return
}
var m model2.ShareDirDBModel
m.Name = name
m.Comment = comment
m.Path = path
m.ReadOnly = readOnly
m.Writeable = writeable
m.Browseable = browse
m.ValidUsers = user
service.MyService.ShareDirectory().Add(&m)
service.MyService.ShareDirectory().UpConfig()
c.JSON(http.StatusOK, model.Result{Success: oasis_err.SUCCESS, Message: oasis_err.GetMsg(oasis_err.SUCCESS)})
}
// @Summary 删除分享
// @Produce application/json
// @Accept application/json
// @Tags share
// @Security ApiKeyAuth
// @Param id path string true "id"
// @Success 200 {string} string "ok"
// @Router /share/del/{id} [delete]
func DeleteShareDirDel(c *gin.Context) {
id := c.Param("id")
service.MyService.ShareDirectory().Delete(id)
service.MyService.ShareDirectory().UpConfig()
c.JSON(http.StatusOK, model.Result{Success: oasis_err.SUCCESS, Message: oasis_err.GetMsg(oasis_err.SUCCESS)})
}
// @Summary 分享详情
// @Produce application/json
// @Accept application/json
// @Tags share
// @Security ApiKeyAuth
// @Param id path string true "id"
// @Success 200 {string} string "ok"
// @Router /share/info/{id} [get]
func GetShareDirInfo(c *gin.Context) {
id := c.Param("id")
info := service.MyService.ShareDirectory().Info(id)
c.JSON(http.StatusOK, model.Result{Success: oasis_err.SUCCESS, Message: oasis_err.GetMsg(oasis_err.SUCCESS), Data: info})
}
// @Summary 更新分享详情
// @Produce application/json
// @Accept application/json
// @Tags share
// @Security ApiKeyAuth
// @Param id path string true "id"
// @Param path formData string true "要分享的文件路径"
// @Param name formData string true "名称"
// @Param comment formData string true "描述"
// @Param read_only formData bool false "是否只读"
// @Param writeable formData bool false "是否可写"
// @Param browseable formData bool false "是否可浏览"
// @Param user formData string false "用户"
// @Success 200 {string} string "ok"
// @Router /share/update/{id} [put]
func PutShareDirEdit(c *gin.Context) {
id, err := strconv.ParseUint(c.Param("id"), 10, 32)
if err != nil || id == 0 {
//todo 报错出去
}
name := c.PostForm("name")
comment := c.PostForm("comment")
path := c.PostForm("path")
readOnly, _ := strconv.ParseBool(c.DefaultPostForm("read_only", "false"))
writeable, _ := strconv.ParseBool(c.DefaultPostForm("writeable", "true"))
browse, _ := strconv.ParseBool(c.DefaultPostForm("browseable", "true"))
user := c.PostForm("user")
if len(name) == 0 || len(comment) == 0 || len(path) == 0 {
c.JSON(http.StatusOK, model.Result{Success: oasis_err.INVALID_PARAMS, Message: oasis_err.GetMsg(oasis_err.INVALID_PARAMS)})
return
}
var m model2.ShareDirDBModel
m.Id = uint(id)
m.Name = name
m.Comment = comment
m.Path = path
m.ReadOnly = readOnly
m.Writeable = writeable
m.Browseable = browse
m.ValidUsers = user
service.MyService.ShareDirectory().Update(&m)
service.MyService.ShareDirectory().UpConfig()
c.JSON(http.StatusOK, model.Result{Success: oasis_err.SUCCESS, Message: oasis_err.GetMsg(oasis_err.SUCCESS)})
}