package ionosDnsProvider import ( "errors" "net" "realdnydns/model/common" "realdnydns/pkg/dnsProvider" ionosAPI "realdnydns/pkg/dnsProvider/ionos/api" redis "github.com/redis/go-redis/v9" ) type IONOS struct { API ionosAPI.IonosAPI Redis *redis.Client } type IONOSConfig struct { APIKey string `yaml:"api_key"` BaseURL string `yaml:"base_url"` Redis *IONOSRedisConfig } type IONOSRedisConfig struct { Address string `yaml:"host"` Password string `yaml:"password"` DB int `yaml:"db"` } func NewIonos(config *IONOSConfig) (dnsProvider.DNSProvider, error) { if config.APIKey == "" { return nil, errors.New("api_key is required") } if config.BaseURL == "" { return nil, errors.New("base_url is required") } var redisClient *redis.Client = nil if config.Redis != nil { redisClient = redis.NewClient(&redis.Options{ Addr: config.Redis.Address, Password: config.Redis.Password, DB: config.Redis.DB, }) } return &IONOS{ ionosAPI.New(config.APIKey, config.BaseURL), redisClient, }, nil } func (ionos *IONOS) UpdateRecord(tld string, subdomain string, ip net.IP, ttl int, prio int, disabled bool) (*common.ARecord, error) { return ionos.API.SetARecord(tld, subdomain, ip, ttl, prio, disabled) } func (ionos *IONOS) GetRecord(tld string, subdomain string) (*common.ARecord, error) { return ionos.API.GetARecord(tld, subdomain) }