diff options
| author | 2026-02-09 06:33:35 +0700 | |
|---|---|---|
| committer | 2026-02-09 06:33:35 +0700 | |
| commit | ebfe3540c333ae7fa3effb410a20e5764627e307 (patch) | |
| tree | 543aa1d73463dcd381f732d67b3361dd53a926a0 /internal/client | |
| parent | da672112ebbc25a3fa9f2cf8e37994a7bd1d0e2f (diff) | |
| download | thumbnail-generator-ebfe3540c333ae7fa3effb410a20e5764627e307.tar.gz thumbnail-generator-ebfe3540c333ae7fa3effb410a20e5764627e307.zip | |
feat: add jpeg converter
fix: explicitly set content type for b2
feat: extend rewrite settings with "never overwrite"
feat: move rewrite setting to converter config
feat: allow to skip size config
Diffstat (limited to 'internal/client')
| -rw-r--r-- | internal/client/output/b2.go | 12 | ||||
| -rw-r--r-- | internal/client/output/local_unix.go | 2 | ||||
| -rw-r--r-- | internal/client/output/output_client_interface.go | 2 |
3 files changed, 13 insertions, 3 deletions
diff --git a/internal/client/output/b2.go b/internal/client/output/b2.go index f53532a..0616368 100644 --- a/internal/client/output/b2.go +++ b/internal/client/output/b2.go @@ -2,8 +2,10 @@ package output import ( "context" + "encoding/json" "fmt" "io" + "log/slog" "github.com/Backblaze/blazer/b2" "github.com/SayaAndy/saya-today-thumbnail-generator/config" @@ -37,7 +39,7 @@ func NewB2OutputClient(cfg *config.OutputConfig) (OutputClient, error) { return &B2OutputClient{b2cl: b2cl, bucket: bucket, prefix: b2cfg.Prefix}, nil } -func (c *B2OutputClient) GetWriter(path string, inputMetadata *input.MetadataStruct) (io.WriteCloser, error) { +func (c *B2OutputClient) GetWriter(path string, inputMetadata *input.MetadataStruct, outputContentType string) (io.WriteCloser, error) { obj := c.bucket.Object(c.prefix + path) if obj == nil { return nil, fmt.Errorf("failed to reference object in B2 bucket") @@ -45,6 +47,7 @@ func (c *B2OutputClient) GetWriter(path string, inputMetadata *input.MetadataStr attrs := &b2.Attrs{Info: make(map[string]string)} attrs.Info["sha1-original"] = inputMetadata.Hash + attrs.ContentType = outputContentType return obj.NewWriter(context.Background(), b2.WithAttrsOption(attrs)), nil } @@ -99,5 +102,12 @@ func (c *B2OutputClient) IsMissing(path string) bool { return true } + attrsJson, _ := json.Marshal(attrs) + slog.Debug("got object attrs", slog.String("path", path), slog.String("attrs", string(attrsJson))) + + if attrs.Size == 0 { + return true + } + return attrs.Status == b2.Hider } diff --git a/internal/client/output/local_unix.go b/internal/client/output/local_unix.go index 668a14b..6f9a7b3 100644 --- a/internal/client/output/local_unix.go +++ b/internal/client/output/local_unix.go @@ -44,7 +44,7 @@ func NewLocalUnixOutputClient(cfg *config.OutputConfig) (OutputClient, error) { return &LocalUnixOutputClient{localCfg.Path, uint32(fpm), uint32(dpm), localCfg.AttributesImplementation}, nil } -func (c *LocalUnixOutputClient) GetWriter(path string, inputMetadata *input.MetadataStruct) (io.WriteCloser, error) { +func (c *LocalUnixOutputClient) GetWriter(path string, inputMetadata *input.MetadataStruct, _ string) (io.WriteCloser, error) { pathSegments := strings.Split(path, "/") dirpath := strings.Join(pathSegments[0:len(pathSegments)-1], "/") if err := os.MkdirAll(c.path+dirpath, os.FileMode(c.dirMode)); err != nil { diff --git a/internal/client/output/output_client_interface.go b/internal/client/output/output_client_interface.go index c74851d..f9e421b 100644 --- a/internal/client/output/output_client_interface.go +++ b/internal/client/output/output_client_interface.go @@ -9,7 +9,7 @@ import ( ) type OutputClient interface { - GetWriter(path string, inputMetadata *input.MetadataStruct) (io.WriteCloser, error) + GetWriter(path string, inputMetadata *input.MetadataStruct, outputContentType string) (io.WriteCloser, error) ReadMetadata(path string) (*MetadataStruct, error) IsMissing(path string) bool } |