/
config_reader.go
68 lines (54 loc) · 1.55 KB
/
config_reader.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package config
import (
"os"
"time"
goredis "github.com/go-redis/redis"
"github.com/talento90/imgart/httpapi"
"github.com/talento90/imgart/log"
"github.com/talento90/imgart/repository/mongo"
"github.com/talento90/imgart/repository/redis"
)
// GetLogConfiguration get logger configurations
func GetLogConfiguration() (log.Configuration, error) {
config := log.Configuration{
Level: getEnv("LOG_LEVEL", "debug"),
Output: os.Stdout,
}
return config, config.Validate()
}
// GetServerConfiguration get server configurations
func GetServerConfiguration() (httpapi.Configuration, error) {
config := httpapi.Configuration{
Address: getEnv("PORT", "4005"),
ReadTimeout: time.Second * 2,
WriteTimeout: time.Second * 4,
}
return config, config.Validate()
}
// GetMongoConfiguration returns the mongo configuration
func GetMongoConfiguration() (mongo.Configuration, error) {
config := mongo.Configuration{
Database: getEnv("MONGO_DATABASE", "imgart"),
MongoURL: getEnv("MONGO_URL", "localhost:27017"),
}
return config, config.Validate()
}
// GetRedisConfiguration returns the redis configuration
func GetRedisConfiguration() (redis.Configuration, error) {
db, err := goredis.ParseURL(getEnv("REDIS_URL", "localhost:6379"))
if err != nil {
return redis.Configuration{}, err
}
config := redis.Configuration{
Address: db.Addr,
Password: db.Password,
Database: db.DB,
}
return config, config.Validate()
}
func getEnv(key string, defaultValue string) string {
if value, ok := os.LookupEnv(key); ok {
return value
}
return defaultValue
}