diff options
Diffstat (limited to 'pkg/components/filesystem')
-rw-r--r-- | pkg/components/filesystem/controller.go | 91 |
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 -} |