Files
platforms/backend/iot-gateway/internal/config/config.go

45 lines
1.1 KiB
Go

package config
import (
"fmt"
"gopkg.in/yaml.v3"
"os"
)
type HTTP struct {
Address string `yaml:"Address"`
InternalToken string `yaml:"InternalToken"`
}
type Upstream struct {
IoTServerURL string `yaml:"IoTServerURL"`
PlatformAPIURL string `yaml:"PlatformAPIURL"`
Token string `yaml:"Token"`
}
type Config struct {
Service string `yaml:"Service"`
HTTP HTTP `yaml:"HTTP"`
Upstream Upstream `yaml:"Upstream"`
}
func Load(path string) (Config, error) {
var cfg Config
data, err := os.ReadFile(path)
if err != nil {
return cfg, err
}
if err = yaml.Unmarshal(data, &cfg); err != nil {
return cfg, err
}
override(&cfg.HTTP.InternalToken, "HEQI_IOT_INTERNAL_TOKEN")
override(&cfg.Upstream.Token, "HEQI_IOT_INTERNAL_TOKEN")
if cfg.HTTP.Address == "" || cfg.HTTP.InternalToken == "" || cfg.Upstream.IoTServerURL == "" || cfg.Upstream.PlatformAPIURL == "" {
return cfg, fmt.Errorf("HTTP 和 Upstream 配置不完整")
}
return cfg, nil
}
func override(target *string, name string) {
if value := os.Getenv(name); value != "" {
*target = value
}
}