Skip to content
Snippets Groups Projects
config.go 2.01 KiB
Newer Older
  • Learn to ignore specific revisions
  • package config
    
    import "time"
    
    type Config struct {
    
    	HTTP         httpConfig
    
    	Mongo        mongoConfig
    	Policy       policyConfig
    	Executor     executorConfig
    	ListExecutor listExecutorConfig
    	Cache        cacheConfig
    
    	Metrics      metricsConfig
    
    
    	LogLevel string `envconfig:"LOG_LEVEL" default:"INFO"`
    }
    
    type httpConfig struct {
    	Host         string        `envconfig:"HTTP_HOST"`
    	Port         string        `envconfig:"HTTP_PORT" default:"8080"`
    	IdleTimeout  time.Duration `envconfig:"HTTP_IDLE_TIMEOUT" default:"120s"`
    	ReadTimeout  time.Duration `envconfig:"HTTP_READ_TIMEOUT" default:"10s"`
    	WriteTimeout time.Duration `envconfig:"HTTP_WRITE_TIMEOUT" default:"10s"`
    }
    
    	Enabled         bool          `envconfig:"AUTH_ENABLED" default:"false"`
    
    	JwkURL          string        `envconfig:"AUTH_JWK_URL"`
    	RefreshInterval time.Duration `envconfig:"AUTH_REFRESH_INTERVAL" default:"1h"`
    }
    
    
    type mongoConfig struct {
    	Addr string `envconfig:"MONGO_ADDR" required:"true"`
    	User string `envconfig:"MONGO_USER" required:"true"`
    	Pass string `envconfig:"MONGO_PASS" required:"true"`
    }
    
    type policyConfig struct {
    	Addr string `envconfig:"POLICY_ADDR" required:"true"`
    }
    
    
    type executorConfig struct {
    
    	Workers        int           `envconfig:"EXECUTOR_WORKERS" default:"5"`
    	PollInterval   time.Duration `envconfig:"EXECUTOR_POLL_INTERVAL" default:"1s"`
    	MaxTaskRetries int           `envconfig:"EXECUTOR_MAX_TASK_RETRIES" default:"10"`
    
    type listExecutorConfig struct {
    	Workers      int           `envconfig:"LIST_EXECUTOR_WORKERS" default:"5"`
    
    Yordan Kinkov's avatar
    Yordan Kinkov committed
    	PollInterval time.Duration `envconfig:"LIST_EXECUTOR_POLL_INTERVAL" default:"1s"`
    
    type cacheConfig struct {
    	Addr string `envconfig:"CACHE_ADDR" required:"true"`
    }
    
    
    type metricsConfig struct {
    	Addr string `envconfig:"METRICS_ADDR" default:":2112"`
    }
    
    	ClientID     string `envconfig:"OAUTH_CLIENT_ID"`
    	ClientSecret string `envconfig:"OAUTH_CLIENT_SECRET"`
    	TokenURL     string `envconfig:"OAUTH_TOKEN_URL"`