From eab7eb3879d7abdf473b61c4c526e76c1a804c6a Mon Sep 17 00:00:00 2001 From: schreifuchs Date: Sat, 7 Mar 2026 20:55:04 +0100 Subject: [PATCH] chore: better config --- internal/components/images/controller.go | 2 +- internal/components/images/resorce.go | 7 +++++-- internal/pkg/config/default.go | 10 ++++++++++ internal/pkg/config/resource.go | 7 +++++++ internal/server/routes.go | 2 +- 5 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 internal/pkg/config/default.go diff --git a/internal/components/images/controller.go b/internal/components/images/controller.go index 6304570..e93c6b9 100644 --- a/internal/components/images/controller.go +++ b/internal/components/images/controller.go @@ -90,7 +90,7 @@ func (s *Service) GetImage(ctx context.Context, uid string, options Options) (im outBuff := bytes.NewBuffer(make([]byte, 0, 1024)) if options.Quality == 0 { - options.Quality = 80 + options.Quality = s.cfg.Quality } err = jpeg.Encode(outBuff, decImage, &jpeg.Options{Quality: options.Quality}) diff --git a/internal/components/images/resorce.go b/internal/components/images/resorce.go index 91aaac2..3d4b860 100644 --- a/internal/components/images/resorce.go +++ b/internal/components/images/resorce.go @@ -3,6 +3,7 @@ package images import ( "os" + "git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/pkg/config" "github.com/valkey-io/valkey-go" "golang.org/x/sync/semaphore" ) @@ -17,13 +18,15 @@ type Service struct { fs fileSystem cache valkey.Client seph *semaphore.Weighted + cfg *config.ImageConfig } -func New(fs fileSystem, cache valkey.Client, maxConcurency int64) *Service { +func New(fs fileSystem, cfg *config.ImageConfig, cache valkey.Client) *Service { return &Service{ fs: fs, cache: cache, - seph: semaphore.NewWeighted(maxConcurency), + seph: semaphore.NewWeighted(cfg.Concurency), + cfg: cfg, } } diff --git a/internal/pkg/config/default.go b/internal/pkg/config/default.go new file mode 100644 index 0000000..eb9030e --- /dev/null +++ b/internal/pkg/config/default.go @@ -0,0 +1,10 @@ +package config + +func Default() Cfg { + return Cfg{ + Image: &ImageConfig{ + Concurency: 10, + Quality: 80, + }, + } +} diff --git a/internal/pkg/config/resource.go b/internal/pkg/config/resource.go index e7d1dd3..e5f7725 100644 --- a/internal/pkg/config/resource.go +++ b/internal/pkg/config/resource.go @@ -9,6 +9,7 @@ import ( type Cfg struct { FileSystem *WebdavConfig `env:", prefix=FILESYSTEM_"` Cache *ValkeyConfig `env:", prefix=CACHE_"` + Image *ImageConfig `env:", prefix=IMAGE_"` } type WebdavConfig struct { @@ -30,7 +31,13 @@ type ValkeyConfig struct { InitAddress []string `env:"ADDRESS"` } +type ImageConfig struct { + Concurency int64 `env:"CONCURENCY"` + Quality int `env:"QUALITY"` +} + func Read(ctx context.Context) (cfg Cfg, err error) { + cfg = Default() err = envconfig.ProcessWith(ctx, &envconfig.Config{ Target: &cfg, diff --git a/internal/server/routes.go b/internal/server/routes.go index 93d135c..efacfbe 100644 --- a/internal/server/routes.go +++ b/internal/server/routes.go @@ -50,7 +50,7 @@ func (s *Server) registerOther() (h http.Handler) { } _ = resthome.New(mux, page.New(fs)) - _ = restimage.New(mux, images.New(fs, valkeyClient, 4)) + _ = restimage.New(mux, images.New(fs, s.cfg.Image, valkeyClient)) mux.Handle("/", http.FileServer(http.FS(web.GetStaticFS())))