mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-09-20 14:56:20 +08:00
28 lines
493 B
Go
28 lines
493 B
Go
|
package commands
|
||
|
|
||
|
import "github.com/StackExchange/dnscontrol/v4/providers"
|
||
|
|
||
|
func NewZoneCache() *zoneCache {
|
||
|
return &zoneCache{}
|
||
|
}
|
||
|
|
||
|
func (zc *zoneCache) zoneList(name string, lister providers.ZoneLister) (*[]string, error) {
|
||
|
zc.Lock()
|
||
|
defer zc.Unlock()
|
||
|
|
||
|
if zc.cache == nil {
|
||
|
zc.cache = map[string]*[]string{}
|
||
|
}
|
||
|
|
||
|
if v, ok := zc.cache[name]; ok {
|
||
|
return v, nil
|
||
|
}
|
||
|
|
||
|
zones, err := lister.ListZones()
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
zc.cache[name] = &zones
|
||
|
return &zones, nil
|
||
|
}
|