diff options
| author | 2026-04-16 02:06:56 +0700 | |
|---|---|---|
| committer | 2026-04-16 02:06:56 +0700 | |
| commit | 0bcb1538ce1d8a98cdf24df3bc7f54d56f33e2a5 (patch) | |
| tree | 264a6eae31ad75615980d6969d314f025a8ff8aa /config/config.go | |
| parent | 9effc519349612582a14f0402564725678f51d7f (diff) | |
| download | thumbnail-generator-0bcb1538ce1d8a98cdf24df3bc7f54d56f33e2a5.tar.gz thumbnail-generator-0bcb1538ce1d8a98cdf24df3bc7f54d56f33e2a5.zip | |
feat: s3 input & output clients
Diffstat (limited to 'config/config.go')
| -rw-r--r-- | config/config.go | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/config/config.go b/config/config.go index e55d4b7..06fa94f 100644 --- a/config/config.go +++ b/config/config.go @@ -25,7 +25,7 @@ type InputConfig struct { } type InputStorageConfig struct { - Type string `json:"Type" validate:"required,oneof=b2 local-unix"` + Type string `json:"Type" validate:"required,oneof=b2 s3 local-unix"` Config any `json:"Config" validate:"required"` } @@ -48,6 +48,12 @@ func (sc *InputStorageConfig) UnmarshalJSON(data []byte) error { return fmt.Errorf("unmarshal B2Config: %w", err) } sc.Config = &b2Config + case "s3": + var s3Config S3Config + if err := json.Unmarshal(tmp.Config, &s3Config); err != nil { + return fmt.Errorf("unmarshal S3Config: %w", err) + } + sc.Config = &s3Config case "local-unix": var localUnixConfig InputLocalUnixConfig if err := json.Unmarshal(tmp.Config, &localUnixConfig); err != nil { @@ -118,7 +124,7 @@ type SizeConfig struct { } type OutputStorageConfig struct { - Type string `json:"Type" validate:"required,oneof=b2 local-unix"` + Type string `json:"Type" validate:"required,oneof=b2 s3 local-unix"` Config any `json:"Config" validate:"required"` } @@ -141,6 +147,12 @@ func (sc *OutputStorageConfig) UnmarshalJSON(data []byte) error { return fmt.Errorf("unmarshal B2Config: %w", err) } sc.Config = &b2Config + case "s3": + var s3Config S3Config + if err := json.Unmarshal(tmp.Config, &s3Config); err != nil { + return fmt.Errorf("unmarshal S3Config: %w", err) + } + sc.Config = &s3Config case "local-unix": var localUnixConfig OutputLocalUnixConfig if err := json.Unmarshal(tmp.Config, &localUnixConfig); err != nil { @@ -162,6 +174,16 @@ type B2Config struct { ApplicationKey string `json:"ApplicationKey"` } +type S3Config struct { + BucketName string `json:"BucketName" validate:"required,min=1"` + Region string `json:"Region" validate:"required,min=1"` + Prefix string `json:"Prefix"` + Endpoint string `json:"Endpoint"` + UsePathStyle bool `json:"UsePathStyle"` + AccessKeyID string `json:"AccessKeyID"` + SecretAccessKey string `json:"SecretAccessKey"` +} + type InputLocalUnixConfig struct { MaxDepth int `json:"MaxDepth" validate:"required,min=0"` Path string `json:"Path" validate:"required,min=1"` |