77 lines
1.2 KiB
Go
77 lines
1.2 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
type Config struct {
|
|
App struct {
|
|
Env string
|
|
}
|
|
|
|
HTTP struct {
|
|
Port string
|
|
Host string
|
|
}
|
|
|
|
GRPC struct {
|
|
Port string
|
|
Host string
|
|
}
|
|
|
|
Storage struct {
|
|
Driver string
|
|
Bucket string
|
|
Region string
|
|
Endpoint string
|
|
AccessKey string
|
|
SecretKey string
|
|
PublicURL string
|
|
}
|
|
|
|
Image struct {
|
|
MaxSizeMB int
|
|
AllowedTypes []string
|
|
}
|
|
|
|
Logging struct {
|
|
Level string
|
|
}
|
|
}
|
|
|
|
func Load() *Config {
|
|
var cfg Config
|
|
loadFromEnv(&cfg)
|
|
return &cfg
|
|
}
|
|
|
|
func loadFromEnv(cfg *Config) {
|
|
get := func(key string) string {
|
|
return strings.TrimSpace(os.Getenv(key))
|
|
}
|
|
|
|
// General
|
|
cfg.App.Env = get("APP_ENV")
|
|
|
|
// HTTP server
|
|
cfg.HTTP.Port = get("HTTP_PORT")
|
|
cfg.HTTP.Host = get("HTTP_HOST")
|
|
|
|
// gRPC server
|
|
cfg.GRPC.Port = get("GRPC_PORT")
|
|
cfg.GRPC.Host = get("GRPC_HOST")
|
|
|
|
// Storage
|
|
cfg.Storage.Driver = get("S3_DRIVER")
|
|
cfg.Storage.Bucket = get("S3_BUCKET")
|
|
cfg.Storage.Region = get("S3_REGION")
|
|
cfg.Storage.Endpoint = get("S3_ENDPOINT")
|
|
cfg.Storage.AccessKey = get("S3_ACCESS_KEY")
|
|
cfg.Storage.SecretKey = get("S3_SECRET_KEY")
|
|
cfg.Storage.PublicURL = get("S3_PUBLIC_URL")
|
|
|
|
// Logging
|
|
cfg.Logging.Level = get("LOG_LEVEL")
|
|
}
|