mirror of https://github.com/synctv-org/synctv
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.3 KiB
Go
69 lines
1.3 KiB
Go
package model
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
json "github.com/json-iterator/go"
|
|
)
|
|
|
|
type VendorMeResp[T any] struct {
|
|
IsLogin bool `json:"isLogin"`
|
|
Info T `json:"info,omitempty"`
|
|
}
|
|
|
|
type VendorFSListResp[T any] struct {
|
|
Paths []*Path `json:"paths"`
|
|
Items []T `json:"items"`
|
|
Total uint64 `json:"total"`
|
|
}
|
|
|
|
func GenDefaultPaths(path string, skipEmpty bool, paths ...*Path) []*Path {
|
|
path = strings.TrimRight(path, "/")
|
|
for _, v := range strings.Split(path, `/`) {
|
|
if v == "" && skipEmpty {
|
|
continue
|
|
}
|
|
if l := len(paths); l != 0 {
|
|
paths = append(paths, &Path{
|
|
Name: v,
|
|
Path: fmt.Sprintf("%s/%s", strings.TrimRight(paths[l-1].Path, "/"), v),
|
|
})
|
|
} else {
|
|
paths = append(paths, &Path{
|
|
Name: v,
|
|
Path: v,
|
|
})
|
|
}
|
|
}
|
|
return paths
|
|
}
|
|
|
|
type Path struct {
|
|
Name string `json:"name"`
|
|
Path string `json:"path"`
|
|
}
|
|
|
|
type Item struct {
|
|
Name string `json:"name"`
|
|
Path string `json:"path"`
|
|
IsDir bool `json:"isDir"`
|
|
}
|
|
|
|
type ServerIDReq struct {
|
|
ServerID string `json:"serverId"`
|
|
}
|
|
|
|
func (r *ServerIDReq) Validate() error {
|
|
if r.ServerID == "" {
|
|
return errors.New("serverId is required")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (r *ServerIDReq) Decode(ctx *gin.Context) error {
|
|
return json.NewDecoder(ctx.Request.Body).Decode(r)
|
|
}
|