personal-website/wde/wde.go

60 lines
1.4 KiB
Go
Raw Permalink Normal View History

2023-04-29 13:58:39 +00:00
package wde
import (
2023-05-02 00:12:43 +00:00
"path"
2023-04-29 13:58:39 +00:00
"personalwebsite/webfilesystem"
"github.com/gin-gonic/gin"
)
type WDE struct {
fs *webfilesystem.WebFileSystem
FilesWidget FilesWidget
}
func NewWDE(webFs *webfilesystem.WebFileSystem) *WDE {
return &WDE{
fs: webFs,
}
}
type FilesWidget struct {
}
2023-05-02 00:59:11 +00:00
func (w *WDE) RenderFileTileView(directory string, host string) (gin.H, error) {
2023-05-07 01:00:22 +00:00
list, err := w.fs.ListDir(directory)
2023-05-01 12:32:41 +00:00
if err != nil {
return nil, err
}
2023-05-07 00:14:30 +00:00
2023-05-01 12:32:41 +00:00
for _, file := range list {
2023-07-22 15:55:23 +00:00
file.Icon = w.GetIconPathForFile(file, directory, "32")
2023-05-01 12:32:41 +00:00
}
return gin.H{
"Files": list,
}, nil
}
2023-05-07 20:20:16 +00:00
2023-07-22 15:55:23 +00:00
func (w *WDE) GetIconPathForFile(fileHeader *webfilesystem.FileHeader, parentDir string, size string) string {
2023-05-07 20:20:16 +00:00
if fileHeader.Icon != "" {
2023-07-22 23:55:08 +00:00
return "/system/libs/img/icon/get?path=" + fileHeader.Icon + "&size=" + size
2023-05-07 20:20:16 +00:00
}
2023-07-22 23:55:08 +00:00
extension := fileHeader.GetExtension()
switch true {
case extension == "app":
return "/system/libs/img/icon/get?path=/Icons/GenericApp.icn&size=" + size
case extension == "jpeg":
2023-05-07 20:20:16 +00:00
fallthrough
2023-07-22 23:55:08 +00:00
case extension == "png":
2023-05-07 20:20:16 +00:00
fallthrough
2023-07-22 23:55:08 +00:00
case extension == "jpg":
return "/system/libs/img/get?path=" + path.Join(parentDir, fileHeader.Name) //+ "&size=" + size
case fileHeader.GetType() == "directory":
return "/system/libs/img/icon/get?path=/Icons/GenericFolder.icn&size=" + size
2023-05-07 20:20:16 +00:00
default:
2023-07-22 23:55:08 +00:00
return "/system/libs/img/icon/get?path=/Icons/GenericDocument.icn&size=" + size
2023-05-07 20:20:16 +00:00
}
}