init
This commit is contained in:
commit
4f6d7cfe60
16 changed files with 1341 additions and 0 deletions
59
config.go
Normal file
59
config.go
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/joho/godotenv"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
Port string
|
||||
DatabaseURL string
|
||||
StorageDir string
|
||||
DevMode bool
|
||||
OIDCIssuer string
|
||||
OIDCAudience string
|
||||
OIDCJWKSURL string
|
||||
OIDCAuthURL string
|
||||
OIDCTokenURL string
|
||||
OIDCClientID string
|
||||
OIDCRedirect string
|
||||
OIDCLogoutURL string
|
||||
}
|
||||
|
||||
func LoadConfig() (Config, error) {
|
||||
_ = godotenv.Load()
|
||||
|
||||
cfg := Config{
|
||||
Port: envOrDefault("PORT", "8080"),
|
||||
DatabaseURL: os.Getenv("DATABASE_URL"),
|
||||
StorageDir: envOrDefault("STORAGE_DIR", "uploads"),
|
||||
DevMode: strings.EqualFold(envOrDefault("DEV_MODE", "false"), "true"),
|
||||
OIDCIssuer: os.Getenv("OIDC_ISSUER"),
|
||||
OIDCAudience: os.Getenv("OIDC_AUDIENCE"),
|
||||
OIDCJWKSURL: os.Getenv("OIDC_JWKS_URL"),
|
||||
OIDCAuthURL: os.Getenv("OIDC_AUTH_URL"),
|
||||
OIDCTokenURL: os.Getenv("OIDC_TOKEN_URL"),
|
||||
OIDCClientID: os.Getenv("OIDC_CLIENT_ID"),
|
||||
OIDCRedirect: os.Getenv("OIDC_REDIRECT_URL"),
|
||||
OIDCLogoutURL: os.Getenv("OIDC_LOGOUT_URL"),
|
||||
}
|
||||
|
||||
if cfg.DatabaseURL == "" {
|
||||
return Config{}, fmt.Errorf("DATABASE_URL is required")
|
||||
}
|
||||
if !cfg.DevMode && (cfg.OIDCIssuer == "" || cfg.OIDCAudience == "" || cfg.OIDCJWKSURL == "") {
|
||||
return Config{}, fmt.Errorf("OIDC_ISSUER, OIDC_AUDIENCE, and OIDC_JWKS_URL are required")
|
||||
}
|
||||
return cfg, nil
|
||||
}
|
||||
|
||||
func envOrDefault(key, fallback string) string {
|
||||
value := os.Getenv(key)
|
||||
if value == "" {
|
||||
return fallback
|
||||
}
|
||||
return value
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue