package app import ( "net" "dnsupdater/provider/manager" "dnsupdater/ip" resolver "dnsupdater/ip/resolver" ) type App struct { iplookup ip.NetInterfaceIPResolver // Ip lookup service IPLookupService resolver.Service // Updater manager ProviderManager *manager.Manager } func NewApp(config *Config) (*App, error) { providerMgr := manager.New() // providerMgr.Register("digitalocean", digitalocean.New(config.Services.DigitalOcean.Token)) err := providerMgr.RegisterFromConfig(config.Providers) if err != nil { return nil, err } l := resolver.Get(config.Services.IPLookup) return &App{ ProviderManager: providerMgr, IPLookupService: resolver.Get(config.Services.IPLookup), iplookup: ip.NewCache(resolver.LookupWrapper(l)).Get, }, nil } func (a App) GetIP(iface_name string) (net.IP, error) { return a.iplookup(iface_name) }