all repos

onasty @ a1de675

a one-time notes service

onasty/mailer/config.go (view raw)

Olexandr Smirnov Olexandr Smirnov
ss2316544@gmail.com
web: forgot password (#169)..., 10 months ago
1
package main
2
3
import (
4
	"os"
5
	"strconv"
6
)
7
8
type Config struct {
9
	AppURL      string
10
	FrontendURL string
11
12
	NatsURL       string
13
	MailgunFrom   string
14
	MailgunDomain string
15
	MailgunAPIKey string
16
17
	LogLevel    string
18
	LogFormat   string
19
	LogShowLine bool
20
21
	MetricsEnabled bool
22
	MetricsPort    int
23
}
24
25
func NewConfig() *Config {
26
	return &Config{
27
		AppURL:         getenvOrDefault("APP_URL", ""),
28
		FrontendURL:    getenvOrDefault("FRONTEND_URL", ""),
29
		NatsURL:        getenvOrDefault("NATS_URL", ""),
30
		MailgunFrom:    getenvOrDefault("MAILGUN_FROM", ""),
31
		MailgunDomain:  getenvOrDefault("MAILGUN_DOMAIN", ""),
32
		MailgunAPIKey:  getenvOrDefault("MAILGUN_API_KEY", ""),
33
		LogLevel:       getenvOrDefault("LOG_LEVEL", "debug"),
34
		LogFormat:      getenvOrDefault("LOG_FORMAT", "json"),
35
		LogShowLine:    getenvOrDefault("LOG_SHOW_LINE", "true") == "true",
36
		MetricsPort:    mustGetenvOrDefaultInt("METRICS_PORT", 8001),
37
		MetricsEnabled: getenvOrDefault("METRICS_ENABLED", "true") == "true",
38
	}
39
}
40
41
func getenvOrDefault(key, def string) string {
42
	if v, ok := os.LookupEnv(key); ok {
43
		return v
44
	}
45
	return def
46
}
47
48
func mustGetenvOrDefaultInt(key string, def int) int {
49
	if v, ok := os.LookupEnv(key); ok {
50
		r, err := strconv.Atoi(v)
51
		if err != nil {
52
			panic(err)
53
		}
54
		return r
55
	}
56
	return def
57
}