vibetunnel/linux/pkg/api/fs.go
2025-06-19 23:44:28 +02:00

49 lines
887 B
Go

package api
import (
"os"
"path/filepath"
"time"
)
type FSEntry struct {
Name string `json:"name"`
Path string `json:"path"`
IsDir bool `json:"is_dir"`
Size int64 `json:"size"`
Mode string `json:"mode"`
ModTime time.Time `json:"mod_time"`
}
func BrowseDirectory(path string) ([]FSEntry, error) {
absPath, err := filepath.Abs(path)
if err != nil {
return nil, err
}
entries, err := os.ReadDir(absPath)
if err != nil {
return nil, err
}
var result []FSEntry
for _, entry := range entries {
info, err := entry.Info()
if err != nil {
continue
}
fsEntry := FSEntry{
Name: entry.Name(),
Path: filepath.Join(absPath, entry.Name()),
IsDir: entry.IsDir(),
Size: info.Size(),
Mode: info.Mode().String(),
ModTime: info.ModTime(),
}
result = append(result, fsEntry)
}
return result, nil
}