Code re-organization
Some checks failed
Go Tests / build (1.22.x) (push) Failing after 1m27s

This commit is contained in:
2025-01-26 18:20:45 -05:00
parent b93d1c29b8
commit 85938a2def
21 changed files with 685 additions and 348 deletions

24
config/aws.go Normal file
View File

@@ -0,0 +1,24 @@
package config
import "github.com/bigkevmcd/go-configparser"
type awsConfig struct {
AwsKey string
AwsSecret string
AwsToken string
AwsRegion string
AwsBucket string
AwsRole string
}
func getAwsConfig(p *configparser.ConfigParser) *awsConfig {
ac := &awsConfig{}
ac.AwsKey, _ = p.Get("aws", "key")
ac.AwsSecret, _ = p.Get("aws", "secret")
ac.AwsToken, _ = p.Get("aws", "token")
ac.AwsRegion, _ = p.Get("aws", "region")
ac.AwsBucket, _ = p.Get("aws", "bucket")
ac.AwsRole, _ = p.Get("aws", "role")
return ac
}

54
config/config.go Normal file
View File

@@ -0,0 +1,54 @@
package config
import (
"github.com/bigkevmcd/go-configparser"
"sync"
)
type Config struct {
initializeOnce sync.Once
Generator *generatorConfig
Aws *awsConfig
Redis *redisConfig
}
var c *Config
func GetConfig() *Config {
if c == nil {
return nil
}
return c
}
// NewConfig returns a new Config struct
func NewConfig(path string) (*Config, error) {
if path == "" {
path = "imgproxy.cfg"
}
p, err := configparser.NewConfigParserFromFile(path)
if err != nil {
return nil, err
}
c = &Config{}
gc, err := getGeneratorConfig(p)
if err != nil {
return nil, err
}
c.Generator = gc
if p.HasSection("aws") {
c.Aws = getAwsConfig(p)
}
if p.HasSection("redis") {
c.Redis = getRedisConfig(p)
}
return c, nil
}

43
config/generator.go Normal file
View File

@@ -0,0 +1,43 @@
package config
import (
"fmt"
"github.com/bigkevmcd/go-configparser"
)
type generatorConfig struct {
Salt []byte
Key []byte
Host string
EncryptionKey string
PlainUrl bool
}
func getGeneratorConfig(p *configparser.ConfigParser) (*generatorConfig, error) {
var config string
var err error
gc := &generatorConfig{}
if !p.HasSection("img-proxy") {
return nil, fmt.Errorf("config error - [img-proxy] config required")
}
config, _ = p.Get("img-proxy", "key")
gc.Key = []byte(config)
config, _ = p.Get("img-proxy", "salt")
gc.Salt = []byte(config)
if config, err = p.Get("img-proxy", "host"); err != nil {
return nil, err
}
gc.Host = config
config, _ = p.Get("img-proxy", "plain-url")
gc.PlainUrl = config == "true" || config == "1"
config, _ = p.Get("img-proxy", "encryption-key")
gc.EncryptionKey = config
return gc, nil
}

19
config/redis.go Normal file
View File

@@ -0,0 +1,19 @@
package config
import "github.com/bigkevmcd/go-configparser"
type redisConfig struct {
Host string
Port string
Password string
DB string
}
func getRedisConfig(p *configparser.ConfigParser) *redisConfig {
rc := &redisConfig{}
rc.Host, _ = p.Get("redis", "host")
rc.Port, _ = p.Get("redis", "port")
rc.Password, _ = p.Get("redis", "password")
rc.DB, _ = p.Get("redis", "db")
return rc
}