112 lines
3.2 KiB
Go
112 lines
3.2 KiB
Go
package server
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"os"
|
|
"time"
|
|
|
|
cnf "git.pbiernat.io/egommerce/go-api-pkg/config"
|
|
)
|
|
|
|
const (
|
|
defName = "basket-svc"
|
|
defDomain = "basket-svc"
|
|
defCacheAddr = "egommerce.local:6379"
|
|
defCachePassword = "12345678"
|
|
defDbURL = "postgres://postgres:12345678@db-postgres:5432/egommerce"
|
|
defEventBusURL = "amqp://guest:guest@api-eventbus:5672"
|
|
defKVNmspc = "dev.egommerce/service/basket"
|
|
defLoggerAddr = "api-logger:24224"
|
|
defNetAddr = ":443"
|
|
defMongoDbURL = "mongodb://mongodb:12345678@mongo-db:27017"
|
|
defPathPrefix = "/basket"
|
|
defRegistryAddr = "api-registry:8500"
|
|
defEbEventsExchange = "api-events"
|
|
defEbEventsQueue = "basket-svc"
|
|
)
|
|
|
|
type Config struct {
|
|
ID string
|
|
Name string
|
|
Domain string
|
|
NetAddr string
|
|
RegistryDomainOverIP string
|
|
PathPrefix string
|
|
|
|
IdleTimeout time.Duration // miliseconds
|
|
ReadTimeout time.Duration // miliseconds
|
|
WriteTimeout time.Duration // miliseconds
|
|
|
|
LoggerAddr string `json:"logger_addr"`
|
|
DbURL string `json:"db_url"`
|
|
CacheAddr string `json:"cache_addr"`
|
|
CachePassword string `json:"cache_password"`
|
|
MongoDbUrl string `json:"mongodb_url"`
|
|
EventBusURL string `json:"eventbus_url"`
|
|
EventBusExchange string `json:"eventbus_exchange"`
|
|
EventBusQueue string `json:"eventbus_queue"`
|
|
KVNamespace string
|
|
RegistryAddr string
|
|
|
|
// Fields with JSON mappings are available through Consul KV storage
|
|
}
|
|
|
|
func NewConfig(name string) *Config {
|
|
c := new(Config)
|
|
|
|
c.ID, _ = os.Hostname()
|
|
c.Name = name
|
|
c.Domain = cnf.GetEnv("APP_DOMAIN", defDomain)
|
|
c.NetAddr = cnf.GetEnv("SERVER_ADDR", defNetAddr)
|
|
c.RegistryDomainOverIP = cnf.GetEnv("REGISTRY_USE_DOMAIN_OVER_IP", "false")
|
|
c.PathPrefix = cnf.GetEnv("APP_PATH_PREFIX", defPathPrefix)
|
|
|
|
c.CacheAddr = cnf.GetEnv("CACHE_ADDR", defCacheAddr)
|
|
c.CachePassword = cnf.GetEnv("CACHE_PASSWORD", defCachePassword)
|
|
c.DbURL = cnf.GetEnv("DATABASE_URL", defDbURL)
|
|
c.EventBusExchange = defEbEventsExchange
|
|
c.EventBusURL = cnf.GetEnv("EVENTBUS_URL", defEventBusURL)
|
|
c.KVNamespace = cnf.GetEnv("APP_KV_NAMESPACE", defKVNmspc)
|
|
c.LoggerAddr = cnf.GetEnv("LOGGER_ADDR", defLoggerAddr)
|
|
c.RegistryAddr = cnf.GetEnv("REGISTRY_ADDR", defRegistryAddr)
|
|
|
|
return c
|
|
}
|
|
|
|
func (c *Config) GetAppFullName() string {
|
|
return fmt.Sprintf("%s_%s", c.Name, c.ID)
|
|
}
|
|
|
|
func (c *Config) GetIP() string {
|
|
host, _ := os.Hostname()
|
|
ips, _ := net.LookupIP(host)
|
|
// for _, ip := range ips {
|
|
// return ip.String()
|
|
// }
|
|
|
|
return ips[0].String()
|
|
}
|
|
|
|
func (c *Config) GetArray() map[string]string { // FIXME fix types etc
|
|
arr := make(map[string]string)
|
|
arr["id"] = c.ID
|
|
arr["name"] = c.Name
|
|
arr["appFullname"] = c.GetAppFullName()
|
|
arr["domain"] = c.Domain
|
|
arr["ip"] = c.GetIP()
|
|
arr["netAddr"] = c.NetAddr
|
|
arr["registryDomainOverIP"] = c.RegistryDomainOverIP
|
|
arr["pathPrefix"] = c.PathPrefix
|
|
arr["cacheAddr"] = c.CacheAddr
|
|
arr["cachePassword"] = c.CachePassword
|
|
arr["dbURL"] = c.DbURL
|
|
arr["eventBusExchange"] = c.EventBusExchange
|
|
arr["eventBusURL"] = c.EventBusURL
|
|
arr["kvNamespace"] = c.KVNamespace
|
|
arr["loggerAddr"] = c.LoggerAddr
|
|
arr["registryAddr"] = c.RegistryAddr
|
|
|
|
return arr
|
|
}
|