Skip to content

Commit 106bcae

Browse files
authored
Maintenance: simplify top level publicip package API (#186)
1 parent 0a89666 commit 106bcae

File tree

3 files changed

+12
-34
lines changed

3 files changed

+12
-34
lines changed

pkg/publicip/publicip.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,9 @@ type Fetcher interface {
1717

1818
type fetcher struct {
1919
settings settings
20-
dns Fetcher
21-
http Fetcher
20+
fetchers []Fetcher
2221
// Cycling effect if both are enabled
23-
counter *uint32 // 32 bit for 32 bit systems
24-
fetchTypes []FetchType
22+
counter *uint32 // 32 bit for 32 bit systems
2523
}
2624

2725
var ErrNoFetchTypeSpecified = errors.New("at least one fetcher type must be specified")
@@ -38,22 +36,22 @@ func NewFetcher(dnsSettings DNSSettings, httpSettings HTTPSettings) (f Fetcher,
3836
}
3937

4038
if settings.dns.Enabled {
41-
fetcher.dns, err = dns.New(settings.dns.Options...)
39+
subFetcher, err := dns.New(settings.dns.Options...)
4240
if err != nil {
4341
return nil, err
4442
}
45-
fetcher.fetchTypes = append(fetcher.fetchTypes, DNS)
43+
fetcher.fetchers = append(fetcher.fetchers, subFetcher)
4644
}
4745

4846
if settings.http.Enabled {
49-
fetcher.http, err = http.New(settings.http.Client, settings.http.Options...)
47+
subFetcher, err := http.New(settings.http.Client, settings.http.Options...)
5048
if err != nil {
5149
return nil, err
5250
}
53-
fetcher.fetchTypes = append(fetcher.fetchTypes, HTTP)
51+
fetcher.fetchers = append(fetcher.fetchers, subFetcher)
5452
}
5553

56-
if len(fetcher.fetchTypes) == 0 {
54+
if len(fetcher.fetchers) == 0 {
5755
return nil, ErrNoFetchTypeSpecified
5856
}
5957

pkg/publicip/subfetcher.go

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,14 @@
11
package publicip
22

33
import (
4-
"errors"
5-
"fmt"
64
"sync/atomic"
75
)
86

9-
var ErrFetcherUndefined = errors.New("fetcher type undefined")
10-
117
func (f *fetcher) getSubFetcher() Fetcher {
12-
fetcherType := f.fetchTypes[0]
13-
if len(f.fetchTypes) > 1 { // cycling effect
14-
index := int(atomic.AddUint32(f.counter, 1)) % len(f.fetchTypes)
15-
fetcherType = f.fetchTypes[index]
16-
}
17-
18-
switch fetcherType {
19-
case DNS:
20-
return f.dns
21-
case HTTP:
22-
return f.http
23-
default:
24-
panic(fmt.Sprintf("fetcher type undefined: %d", fetcherType))
8+
fetcher := f.fetchers[0]
9+
if len(f.fetchers) > 1 { // cycling effect
10+
index := int(atomic.AddUint32(f.counter, 1)) % len(f.fetchers)
11+
fetcher = f.fetchers[index]
2512
}
13+
return fetcher
2614
}

pkg/publicip/types.go

Lines changed: 0 additions & 8 deletions
This file was deleted.

0 commit comments

Comments
 (0)