diff options
| -rw-r--r-- | config/config.go | 6 | ||||
| -rw-r--r-- | config/config.json | 2 | ||||
| -rw-r--r-- | internal/converter/processor_interface.go (renamed from internal/processor/processor_interface.go) | 4 | ||||
| -rw-r--r-- | internal/converter/webp.go (renamed from internal/processor/webp.go) | 16 | ||||
| -rw-r--r-- | main.go | 20 |
5 files changed, 26 insertions, 22 deletions
diff --git a/config/config.go b/config/config.go index 66533a6..3ca8f84 100644 --- a/config/config.go +++ b/config/config.go @@ -11,7 +11,7 @@ import ( type Config struct { Input InputConfig `json:"Input" validate:"required"` - Processor ProcessorConfig `json:"Processor" validate:"required"` + Converter ConverterConfig `json:"Converter" validate:"required"` Output OutputConfig `json:"Output" validate:"required"` MaxConcurrentJobs int `json:"MaxConcurrentJobs" validate:"required,min=1"` ForceRewrite bool `json:"ForceRewrite" validate:"required"` @@ -72,12 +72,12 @@ type LocalConfig struct { Path string `json:"Path" validate:"required,min=1"` } -type ProcessorConfig struct { +type ConverterConfig struct { Type string `json:"Type" validate:"required,oneof=webp"` Config any `json:"Config" validate:"required"` } -func (pc *ProcessorConfig) UnmarshalJSON(data []byte) error { +func (pc *ConverterConfig) UnmarshalJSON(data []byte) error { var tmp struct { Type string `json:"Type"` Config json.RawMessage `json:"Config"` diff --git a/config/config.json b/config/config.json index acf3e02..db4ddd4 100644 --- a/config/config.json +++ b/config/config.json @@ -19,7 +19,7 @@ "png" ] }, - "Processor": { + "Converter": { "Type": "webp", "Config": { "Quality": 80, diff --git a/internal/processor/processor_interface.go b/internal/converter/processor_interface.go index 7cf20f2..88b5ac3 100644 --- a/internal/processor/processor_interface.go +++ b/internal/converter/processor_interface.go @@ -1,8 +1,8 @@ -package processor +package converter import "io" -type Processor interface { +type Converter interface { DeductOutputPath(inputPath string) string Process(ext string, reader io.ReadCloser, writer io.WriteCloser) error } diff --git a/internal/processor/webp.go b/internal/converter/webp.go index 86ff567..b7f1216 100644 --- a/internal/processor/webp.go +++ b/internal/converter/webp.go @@ -1,4 +1,4 @@ -package processor +package converter import ( "fmt" @@ -16,24 +16,24 @@ import ( "github.com/kolesa-team/go-webp/webp" ) -var _ Processor = (*WebpProcessor)(nil) +var _ Converter = (*WebpConverter)(nil) -type WebpProcessor struct { +type WebpConverter struct { maxWidth int maxHeight int quality int } -func NewWebpProcessor(cfg *config.ProcessorConfig) (*WebpProcessor, error) { +func NewWebpConverter(cfg *config.ConverterConfig) (*WebpConverter, error) { if cfg.Type != "webp" { - return nil, fmt.Errorf("invalid storage type for WebpProcessor") + return nil, fmt.Errorf("invalid storage type for WebpConverter") } webpCfg := cfg.Config.(*config.WebpConfig) - return &WebpProcessor{webpCfg.Size.MaxWidth, webpCfg.Size.MaxHeight, webpCfg.Quality}, nil + return &WebpConverter{webpCfg.Size.MaxWidth, webpCfg.Size.MaxHeight, webpCfg.Quality}, nil } -func (p *WebpProcessor) DeductOutputPath(inputPath string) string { +func (p *WebpConverter) DeductOutputPath(inputPath string) string { pathParts := strings.Split(inputPath, ".") if len(pathParts) < 2 { return inputPath + ".webp" @@ -42,7 +42,7 @@ func (p *WebpProcessor) DeductOutputPath(inputPath string) string { return strings.Join(pathParts, ".") } -func (p *WebpProcessor) Process(contentType string, reader io.ReadCloser, writer io.WriteCloser) error { +func (p *WebpConverter) Process(contentType string, reader io.ReadCloser, writer io.WriteCloser) error { var src image.Image var err error @@ -11,7 +11,7 @@ import ( "github.com/SayaAndy/saya-today-thumbnail-generator/config" "github.com/SayaAndy/saya-today-thumbnail-generator/internal/client/input" "github.com/SayaAndy/saya-today-thumbnail-generator/internal/client/output" - "github.com/SayaAndy/saya-today-thumbnail-generator/internal/processor" + "github.com/SayaAndy/saya-today-thumbnail-generator/internal/converter" ) var ( @@ -20,6 +20,7 @@ var ( ) func main() { + var err error signal.Notify(sigTermChan, os.Interrupt, syscall.SIGTERM) flag.Parse() @@ -40,19 +41,22 @@ func main() { default: } - inputClient, err := input.NewB2InputClient(&cfg.Input) + var inputClient input.InputClient + inputClient, err = input.NewB2InputClient(&cfg.Input) if err != nil { slog.Error("fail to initialize input client", slog.String("error", err.Error())) os.Exit(1) } - outputClient, err := output.NewB2OutputClient(&cfg.Output) + var outputClient output.OutputClient + outputClient, err = output.NewB2OutputClient(&cfg.Output) if err != nil { slog.Error("fail to initialize output client", slog.String("error", err.Error())) os.Exit(1) } - converter, err := processor.NewWebpProcessor(&cfg.Processor) + var conv converter.Converter + conv, err = converter.NewWebpConverter(&cfg.Converter) if err != nil { slog.Error("fail to initialize converter", slog.String("error", err.Error())) os.Exit(1) @@ -60,10 +64,10 @@ func main() { generalLogger := slog.With( slog.String("input_storage", cfg.Input.Storage.Type), - slog.String("processor_type", cfg.Processor.Type), + slog.String("converter_type", cfg.Converter.Type), slog.String("output_storage", cfg.Output.Storage.Type), ) - generalLogger.Info("initialized clients and processor") + generalLogger.Info("initialized clients and converter") select { case <-sigTermChan: @@ -92,7 +96,7 @@ func main() { for i, file := range files { go func(index int, inputName string) { - outputName := converter.DeductOutputPath(inputName) + outputName := conv.DeductOutputPath(inputName) fileLogger := generalLogger.With(slog.String("input_path", inputName), slog.String("output_path", outputName), slog.Int("file_index", index)) threadSigTermChannel := make(chan os.Signal, 1) @@ -139,7 +143,7 @@ func main() { return } - if err := converter.Process(inputMetadata.ContentType, reader, writer); err != nil { + if err := conv.Process(inputMetadata.ContentType, reader, writer); err != nil { fileLogger.Warn("fail to convert file", slog.String("error", err.Error())) return } |