|
- package config
-
- import (
- "os"
- "strconv"
- )
-
- type Config struct {
- HTTPAddr string
- DBDriver string
- DBURL string
- AppSecret string
- LogLevel string
- QCBaseURL string
- QCToken string
- PollIntervalSeconds int
- PollTimeoutSeconds int
- PollMaxConcurrent int
- }
-
- func Load() Config {
- return Config{
- HTTPAddr: getenv("HTTP_ADDR", ":8080"),
- DBDriver: getenv("DB_DRIVER", "sqlite"),
- DBURL: getenv("DB_URL", "data/qctextbuilder.db"),
- AppSecret: os.Getenv("APP_SECRET"),
- LogLevel: getenv("LOG_LEVEL", "info"),
- QCBaseURL: getenv("QC_BASE_URL", "https://qc-api.yggdrasil.dev-mono.net/api/v1"),
- QCToken: os.Getenv("QC_TOKEN"),
- PollIntervalSeconds: getenvInt("POLL_INTERVAL_SECONDS", 5),
- PollTimeoutSeconds: getenvInt("POLL_TIMEOUT_SECONDS", 300),
- PollMaxConcurrent: getenvInt("POLL_MAX_CONCURRENT", 4),
- }
- }
-
- func getenv(key, fallback string) string {
- v := os.Getenv(key)
- if v == "" {
- return fallback
- }
- return v
- }
-
- func getenvInt(key string, fallback int) int {
- v := os.Getenv(key)
- if v == "" {
- return fallback
- }
- n, err := strconv.Atoi(v)
- if err != nil {
- return fallback
- }
- return n
- }
|