48 lines
1.1 KiB
Go

package config
import (
"os"
"strings"
"time"
)
// Config 只承载 luck-gateway 自己启动所需的边界配置;业务规则仍由 lucky gift owner service 决策。
type Config struct {
HTTPAddr string
LuckyGiftGRPCAddr string
AllowedApps map[string]struct{}
RequestTimeout time.Duration
}
func Default() Config {
return Config{
HTTPAddr: envDefault("LUCK_GATEWAY_HTTP_ADDR", ":13014"),
LuckyGiftGRPCAddr: envDefault("LUCKY_GIFT_GRPC_ADDR", "127.0.0.1:13013"),
AllowedApps: parseAllowedApps(envDefault("LUCK_GATEWAY_ALLOWED_APPS", "aslan,yumi")),
RequestTimeout: 3 * time.Second,
}
}
func parseAllowedApps(raw string) map[string]struct{} {
apps := map[string]struct{}{}
for _, entry := range strings.Split(raw, ",") {
app := normalizeAppCode(entry)
if app == "" {
continue
}
apps[app] = struct{}{}
}
return apps
}
func normalizeAppCode(value string) string {
return strings.ToLower(strings.TrimSpace(value))
}
func envDefault(key string, fallback string) string {
if value := os.Getenv(key); value != "" {
return value
}
return fallback
}