aboutsummaryrefslogtreecommitdiff
path: root/pkg/components/filesystem/controller.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/components/filesystem/controller.go')
-rw-r--r--pkg/components/filesystem/controller.go91
1 files changed, 0 insertions, 91 deletions
diff --git a/pkg/components/filesystem/controller.go b/pkg/components/filesystem/controller.go
deleted file mode 100644
index 6c613a3..0000000
--- a/pkg/components/filesystem/controller.go
+++ /dev/null
@@ -1,91 +0,0 @@
-package filesystem
-
-import (
- "io/fs"
- "net/url"
- "path"
- "strings"
-
- "git.sr.ht/~gabrielgio/img/pkg/database/repository"
-)
-
-type (
- Controller struct {
- repository repository.FileSystemRepository
- }
-
- DirectoryParam struct {
- Name string
- UrlEncodedPath string
- }
-
- FileParam struct {
- UrlEncodedPath string
- Info fs.FileInfo
- }
-
- Page struct {
- History []*DirectoryParam
- Files []*FileParam
- }
-)
-
-func NewController(repository repository.FileSystemRepository) *Controller {
- return &Controller{
- repository: repository,
- }
-}
-
-func getHistory(filepath string) []*DirectoryParam {
- var (
- paths = strings.Split(filepath, "/")
- result = make([]*DirectoryParam, 0, len(paths))
- acc = ""
- )
-
- // add root folder
- result = append(result, &DirectoryParam{
- Name: "...",
- UrlEncodedPath: "",
- })
-
- if len(paths) == 1 && paths[0] == "" {
- return result
- }
-
- for _, p := range paths {
- acc = path.Join(acc, p)
- result = append(result, &DirectoryParam{
- Name: p,
- UrlEncodedPath: url.QueryEscape(acc),
- })
- }
- return result
-}
-
-func (self *Controller) GetPage(filepath string) (*Page, error) {
- decodedPath, err := url.QueryUnescape(filepath)
- if err != nil {
- return nil, err
- }
-
- files, err := self.repository.List(decodedPath)
- if err != nil {
- return nil, err
- }
-
- params := make([]*FileParam, 0, len(files))
- for _, info := range files {
- fullPath := path.Join(decodedPath, info.Name())
- scapedFullPath := url.QueryEscape(fullPath)
- params = append(params, &FileParam{
- Info: info,
- UrlEncodedPath: scapedFullPath,
- })
- }
-
- return &Page{
- Files: params,
- History: getHistory(decodedPath),
- }, nil
-}