summaryrefslogtreecommitdiff
path: root/config
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/config.go107
-rw-r--r--config/config.json31
2 files changed, 0 insertions, 138 deletions
diff --git a/config/config.go b/config/config.go
deleted file mode 100644
index 6d37904..0000000
--- a/config/config.go
+++ /dev/null
@@ -1,107 +0,0 @@
-package config
-
-import (
- "encoding/json"
- "fmt"
- "os"
-
- "github.com/go-playground/validator/v10"
-)
-
-type Config struct {
- Input InputConfig `json:"Input" validate:"required"`
- Output OutputConfig `json:"Output" validate:"required"`
-}
-
-type InputConfig struct {
- Storage StorageConfig `json:"Storage" validate:"required"`
-}
-
-type OutputConfig struct {
- Storage StorageConfig `json:"Storage" validate:"required"`
- Quality int `json:"Quality" validate:"required,min=1,max=100"`
- Size SizeConfig `json:"Size" validate:"required"`
-}
-
-type StorageConfig struct {
- Type string `json:"Type" validate:"required,oneof=b2 local"`
- Config any `json:"Config" validate:"required"`
-}
-
-func (sc *StorageConfig) UnmarshalJSON(data []byte) error {
- var tmp struct {
- Type string `json:"Type"`
- Config json.RawMessage `json:"Config"`
- }
-
- if err := json.Unmarshal(data, &tmp); err != nil {
- return err
- }
-
- sc.Type = tmp.Type
-
- switch tmp.Type {
- case "b2":
- var b2Config B2Config
- if err := json.Unmarshal(tmp.Config, &b2Config); err != nil {
- return fmt.Errorf("unmarshal B2Config: %w", err)
- }
- sc.Config = b2Config
- case "local":
- var localConfig LocalConfig
- if err := json.Unmarshal(tmp.Config, &localConfig); err != nil {
- return fmt.Errorf("unmarshal LocalConfig: %w", err)
- }
- sc.Config = localConfig
- default:
- return fmt.Errorf("unsupported storage type: %s", tmp.Type)
- }
-
- return nil
-}
-
-type B2Config struct {
- BucketName string `json:"BucketName" validate:"required,min=1"`
- Region string `json:"Region" validate:"required,min=1"`
- Prefix string `json:"Prefix"`
- KeyID string `json:"KeyID"`
- ApplicationKey string `json:"ApplicationKey"`
-}
-
-type LocalConfig struct {
- Path string `json:"Path" validate:"required,min=1"`
-}
-
-type SizeConfig struct {
- MaxWidth int `json:"MaxWidth" validate:"required,min=0"`
- MaxHeight int `json:"MaxHeight" validate:"required,min=0"`
-}
-
-func LoadConfig(path string, config *Config) error {
- fileBytes, err := os.ReadFile(path)
- if err != nil {
- return err
- }
-
- expandedFileBytes := []byte(os.ExpandEnv(string(fileBytes)))
-
- if err = json.Unmarshal(expandedFileBytes, config); err != nil {
- return err
- }
-
- return nil
-}
-
-func InitConfig(path string) (*Config, error) {
- config := &Config{}
- if err := LoadConfig(path, config); err != nil {
- return nil, err
- }
-
- validate := validator.New(validator.WithRequiredStructEnabled())
- if err := validate.Struct(config); err != nil {
- return nil, err
- }
-
- return config, nil
-}
diff --git a/config/config.json b/config/config.json
deleted file mode 100644
index d818107..0000000
--- a/config/config.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "Input": {
- "Storage": {
- "Type": "b2",
- "Config": {
- "BucketName": "sayana-photos",
- "Region": "eu-central-003",
- "Prefix": "full/",
- "KeyID": "${B2_KEY_ID}",
- "ApplicationKey": "${B2_APPLICATION_KEY}"
- }
- }
- },
- "Output": {
- "Storage": {
- "Type": "b2",
- "Config": {
- "BucketName": "sayana-photos",
- "Region": "eu-central-003",
- "Prefix": "thumbnails/",
- "KeyID": "${B2_KEY_ID}",
- "ApplicationKey": "${B2_APPLICATION_KEY}"
- }
- },
- "Quality": 80,
- "Size": {
- "MaxWidth": 1280,
- "MaxHeight": 0
- }
- }
-} \ No newline at end of file