summaryrefslogtreecommitdiff
path: root/internal/client/input
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
Diffstat (limited to 'internal/client/input')
-rw-r--r--internal/client/input/b2.go2
-rw-r--r--internal/client/input/input_client_interface.go7
-rw-r--r--internal/client/input/local_unix.go107
3 files changed, 1 insertions, 115 deletions
diff --git a/internal/client/input/b2.go b/internal/client/input/b2.go
index 0092313..54a6b09 100644
--- a/internal/client/input/b2.go
+++ b/internal/client/input/b2.go
@@ -21,7 +21,7 @@ type B2InputClient struct {
knownExtensions []string
}
-func NewB2InputClient(cfg *config.InputConfig) (InputClient, error) {
+func NewB2InputClient(cfg *config.InputConfig) (*B2InputClient, error) {
if cfg.Storage.Type != "b2" {
return nil, fmt.Errorf("invalid storage type for B2InputClient")
}
diff --git a/internal/client/input/input_client_interface.go b/internal/client/input/input_client_interface.go
index 5d12fa8..c896ca4 100644
--- a/internal/client/input/input_client_interface.go
+++ b/internal/client/input/input_client_interface.go
@@ -3,8 +3,6 @@ package input
import (
"io"
"time"
-
- "github.com/SayaAndy/saya-today-thumbnail-generator/config"
)
type InputClient interface {
@@ -22,8 +20,3 @@ type MetadataStruct struct {
LastModified time.Time
Misc map[string]string
}
-
-var NewInputClientMap = map[string]func(cfg *config.InputConfig) (InputClient, error){
- "b2": NewB2InputClient,
- "local-unix": NewLocalUnixInputClient,
-}
diff --git a/internal/client/input/local_unix.go b/internal/client/input/local_unix.go
deleted file mode 100644
index 2df3a41..0000000
--- a/internal/client/input/local_unix.go
+++ /dev/null
@@ -1,107 +0,0 @@
-package input
-
-import (
- "fmt"
- "io"
- "log/slog"
- "mime"
- "os"
- "slices"
- "strconv"
- "strings"
- "syscall"
- "time"
-
- "github.com/SayaAndy/saya-today-thumbnail-generator/config"
-)
-
-var _ InputClient = (*LocalUnixInputClient)(nil)
-
-type LocalUnixInputClient struct {
- path string
- maxDepth int
- knownExtensions []string
-}
-
-func NewLocalUnixInputClient(cfg *config.InputConfig) (InputClient, error) {
- if cfg.Storage.Type != "local-unix" {
- return nil, fmt.Errorf("invalid storage type for LocalUnixInputClient")
- }
- localCfg := cfg.Storage.Config.(*config.InputLocalUnixConfig)
-
- return &LocalUnixInputClient{
- path: localCfg.Path,
- maxDepth: localCfg.MaxDepth,
- knownExtensions: cfg.KnownExtensions,
- }, nil
-}
-
-func (c *LocalUnixInputClient) Scan() ([]string, error) {
- return c.recursiveScan(c.path, c.maxDepth)
-}
-
-func (c *LocalUnixInputClient) recursiveScan(dir string, depth int) ([]string, error) {
- filePaths := make([]string, 0)
- entries, err := os.ReadDir(dir)
- if err != nil {
- return nil, fmt.Errorf("fail to read directory: %w", err)
- }
-
- for _, entry := range entries {
- if entry.IsDir() && depth > 0 {
- subFilePaths, err := c.recursiveScan(dir+entry.Name()+"/", depth-1)
- if err != nil {
- return nil, fmt.Errorf("fail to scan subdirectory '%s': %w", entry.Name(), err)
- }
- filePaths = append(filePaths, subFilePaths...)
- } else if !entry.IsDir() {
- nameParts := strings.Split(entry.Name(), ".")
- if len(nameParts) < 2 {
- continue
- }
- if slices.Contains(c.knownExtensions, strings.ToLower(nameParts[len(nameParts)-1])) {
- filePaths = append(filePaths, strings.TrimPrefix(dir+entry.Name(), c.path))
- }
- fmt.Println(entry.Name())
- }
- }
-
- return filePaths, nil
-}
-
-func (c *LocalUnixInputClient) ReadMetadata(path string) (*MetadataStruct, error) {
- nodePathParts := strings.Split(path, "/")
- nodeName := nodePathParts[len(nodePathParts)-1]
- nodeNameParts := strings.Split(nodeName, ".")
- nodeExt := ""
- if len(nodeNameParts) >= 2 {
- nodeExt = nodeNameParts[len(nodeNameParts)-1]
- }
- slog.Debug("got a file extension", slog.String("extension", nodeExt), slog.String("path", path), slog.String("filename", nodeName))
-
- fileInfo, err := os.Stat(c.path + path)
- if err != nil {
- return nil, fmt.Errorf("fail to read file info: %w", err)
- }
-
- stat_t := fileInfo.Sys().(*syscall.Stat_t)
- creationTime := time.Unix(stat_t.Ctim.Sec, stat_t.Ctim.Nsec)
-
- misc := map[string]string{
- "Size": strconv.FormatInt(fileInfo.Size(), 10),
- }
-
- return &MetadataStruct{
- Name: fileInfo.Name(),
- StorageType: "local-unix",
- Hash: strconv.FormatInt(fileInfo.ModTime().Unix(), 16),
- ContentType: mime.TypeByExtension("." + nodeExt),
- FirstCreated: creationTime,
- LastModified: fileInfo.ModTime(),
- Misc: misc,
- }, nil
-}
-
-func (c *LocalUnixInputClient) GetReader(path string) (io.ReadCloser, error) {
- return os.Open(c.path + path)
-}