package images import ( "os" "git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/pkg/config" "github.com/valkey-io/valkey-go" "golang.org/x/sync/semaphore" ) type Options struct { Width int // max width, 0 is unlimited Height int // max Height, 0 is unlimited Quality int // quality of the output jpeg } type Service struct { fs fileSystem cache valkey.Client seph *semaphore.Weighted cfg *config.Image } func New(fs fileSystem, cfg *config.Image, cache valkey.Client) *Service { return &Service{ fs: fs, cache: cache, seph: semaphore.NewWeighted(cfg.Concurency), cfg: cfg, } } type fileSystem interface { Read(path string) ([]byte, error) Stat(path string) (os.FileInfo, error) }