1
0
Fork 0
mirror of https://gitlab.com/pnx-tools/dns-updater.git synced 2026-06-16 05:54:56 +02:00
dns-updater/dns/service/manager.go

49 lines
927 B
Go

package service
import (
"fmt"
"dnsupdater/dns/service/digitalocean"
"dnsupdater/dns/service/vultr"
)
var factories = map[string]Factory{
"digitalocean": digitalocean.Factory,
"vultr": vultr.Factory,
}
type Manager struct {
services map[string]Service
}
func NewManager() *Manager {
return &Manager{
services: make(map[string]Service),
}
}
func (m Manager) Get(name string) Service {
if service, ok := m.services[name]; ok {
return service
}
return nil
}
func (m Manager) RegisterFromConfig(providers map[string]map[string]any) error {
for name, args := range providers {
if factory, ok := factories[name]; ok {
provider, err := factory(args)
if err != nil {
return fmt.Errorf("could not create provider '%s': %v", name, err)
}
m.Register(name, provider.(Service))
}
}
return nil
}
func (m Manager) Register(name string, provider Service) {
m.services[name] = provider
}