37 lines
741 B
Go
37 lines
741 B
Go
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.ImageConfig
|
|
}
|
|
|
|
func New(fs fileSystem, cfg *config.ImageConfig, 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)
|
|
}
|