2023-03-17 07:37:28 +00:00
package v1
import (
"strings"
"github.com/IceWhaleTech/CasaOS-Common/utils/logger"
"github.com/IceWhaleTech/CasaOS/drivers/dropbox"
"github.com/IceWhaleTech/CasaOS/drivers/google_drive"
2023-08-22 04:01:40 +00:00
"github.com/IceWhaleTech/CasaOS/drivers/onedrive"
2023-03-17 07:37:28 +00:00
"github.com/IceWhaleTech/CasaOS/model"
"github.com/IceWhaleTech/CasaOS/pkg/utils/common_err"
"github.com/IceWhaleTech/CasaOS/pkg/utils/httper"
"github.com/IceWhaleTech/CasaOS/service"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
func ListStorages ( c * gin . Context ) {
// var req model.PageReq
// if err := c.ShouldBind(&req); err != nil {
// c.JSON(common_err.SUCCESS, model.Result{Success: common_err.CLIENT_ERROR, Message: common_err.GetMsg(common_err.CLIENT_ERROR), Data: err.Error()})
// return
// }
// req.Validate()
//logger.Info("ListStorages", zap.Any("req", req))
//storages, total, err := service.MyService.Storage().GetStorages(req.Page, req.PerPage)
// if err != nil {
// c.JSON(common_err.SUCCESS, model.Result{Success: common_err.SERVICE_ERROR, Message: common_err.GetMsg(common_err.SERVICE_ERROR), Data: err.Error()})
// return
// }
// c.JSON(common_err.SUCCESS, model.Result{Success: common_err.SUCCESS, Message: common_err.GetMsg(common_err.SUCCESS), Data: model.PageResp{
// Content: storages,
// Total: total,
// }})
r , err := service . MyService . Storage ( ) . GetStorages ( )
if err != nil {
c . JSON ( common_err . SUCCESS , model . Result { Success : common_err . SERVICE_ERROR , Message : common_err . GetMsg ( common_err . SERVICE_ERROR ) , Data : err . Error ( ) } )
return
}
for i := 0 ; i < len ( r . MountPoints ) ; i ++ {
dataMap , err := service . MyService . Storage ( ) . GetConfigByName ( r . MountPoints [ i ] . Fs )
if err != nil {
logger . Error ( "GetConfigByName" , zap . Any ( "err" , err ) )
continue
}
if dataMap [ "type" ] == "drive" {
r . MountPoints [ i ] . Icon = google_drive . ICONURL
}
if dataMap [ "type" ] == "dropbox" {
r . MountPoints [ i ] . Icon = dropbox . ICONURL
}
2023-08-22 04:01:40 +00:00
if dataMap [ "type" ] == "onedrive" {
r . MountPoints [ i ] . Icon = onedrive . ICONURL
}
2023-03-17 07:37:28 +00:00
r . MountPoints [ i ] . Name = dataMap [ "username" ]
}
list := [ ] httper . MountPoint { }
for _ , v := range r . MountPoints {
list = append ( list , httper . MountPoint {
Fs : v . Fs ,
Icon : v . Icon ,
MountPoint : v . MountPoint ,
Name : v . Name ,
} )
}
c . JSON ( common_err . SUCCESS , model . Result { Success : common_err . SUCCESS , Message : common_err . GetMsg ( common_err . SUCCESS ) , Data : list } )
}
func UmountStorage ( c * gin . Context ) {
json := make ( map [ string ] string )
c . ShouldBind ( & json )
mountPoint := json [ "mount_point" ]
if mountPoint == "" {
c . JSON ( common_err . CLIENT_ERROR , model . Result { Success : common_err . CLIENT_ERROR , Message : common_err . GetMsg ( common_err . CLIENT_ERROR ) , Data : "mount_point is empty" } )
return
}
err := service . MyService . Storage ( ) . UnmountStorage ( mountPoint )
if err != nil {
c . JSON ( common_err . SERVICE_ERROR , model . Result { Success : common_err . SERVICE_ERROR , Message : common_err . GetMsg ( common_err . SERVICE_ERROR ) , Data : err . Error ( ) } )
return
}
service . MyService . Storage ( ) . DeleteConfigByName ( strings . ReplaceAll ( mountPoint , "/mnt/" , "" ) )
c . JSON ( common_err . SUCCESS , model . Result { Success : common_err . SUCCESS , Message : common_err . GetMsg ( common_err . SUCCESS ) , Data : "success" } )
}
func GetStorage ( c * gin . Context ) {
// idStr := c.Query("id")
// id, err := strconv.Atoi(idStr)
// if err != nil {
// c.JSON(common_err.SUCCESS, model.Result{Success: common_err.CLIENT_ERROR, Message: common_err.GetMsg(common_err.CLIENT_ERROR), Data: err.Error()})
// return
// }
// storage, err := service.MyService.Storage().GetStorageById(uint(id))
// if err != nil {
// c.JSON(common_err.SUCCESS, model.Result{Success: common_err.SERVICE_ERROR, Message: common_err.GetMsg(common_err.SERVICE_ERROR), Data: err.Error()})
// return
// }
// c.JSON(common_err.SUCCESS, model.Result{Success: common_err.SUCCESS, Message: common_err.GetMsg(common_err.SUCCESS), Data: storage})
}