Skip to content

Commit f261856

Browse files
committed
update for backoff v5
1 parent 8494506 commit f261856

File tree

3 files changed

+32
-27
lines changed

3 files changed

+32
-27
lines changed

go.mod

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ go 1.23
44

55
require (
66
github.com/bugsnag/bugsnag-go/v2 v2.5.1
7-
github.com/cenkalti/backoff/v4 v4.3.0
87
github.com/cenkalti/backoff/v5 v5.0.1
98
github.com/joho/godotenv v1.5.1
109
github.com/pkg/errors v0.9.1

go.sum

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ github.com/bugsnag/bugsnag-go/v2 v2.5.1 h1:cGsEJHcis1zfQ4KoFaBPIT4N1TYqVNRALKr2w
44
github.com/bugsnag/bugsnag-go/v2 v2.5.1/go.mod h1:S9njhE7l6XCiKycOZ2zp0x1zoEE5nL3HjROCSsKc/3c=
55
github.com/bugsnag/panicwrap v1.3.4 h1:A6sXFtDGsgU/4BLf5JT0o5uYg3EeKgGx3Sfs+/uk3pU=
66
github.com/bugsnag/panicwrap v1.3.4/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE=
7-
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
8-
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
7+
github.com/cenkalti/backoff/v5 v5.0.1 h1:kGZdCHH1+eW+Yd0wftimjMuhg9zidDvNF5aGdnkkb+U=
98
github.com/cenkalti/backoff/v5 v5.0.1/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw=
109
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
1110
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=

main.go

+31-24
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
"time"
1313

1414
"github.com/bugsnag/bugsnag-go/v2"
15-
"github.com/cenkalti/backoff/v4"
15+
"github.com/cenkalti/backoff/v5"
1616
"github.com/joho/godotenv"
1717
"github.com/pkg/errors"
1818
)
@@ -92,14 +92,17 @@ func main() {
9292
}
9393

9494
func getIPAddressWithRetry(ctx context.Context, client *http.Client) (string, error) {
95-
ip, err := backoff.RetryNotifyWithData(
96-
func() (string, error) {
97-
return getIPAddress(ctx, client)
98-
},
99-
backoff.NewExponentialBackOff(),
100-
func(err error, d time.Duration) {
101-
log.Printf("Problem getting IP address: %s, retrying in %s\n", err, d)
102-
},
95+
operation := func() (string, error) {
96+
return getIPAddress(ctx, client)
97+
}
98+
notify := func(err error, d time.Duration) {
99+
log.Printf("Problem getting IP address: %s, retrying in %s\n", err, d)
100+
}
101+
ip, err := backoff.Retry(
102+
ctx,
103+
operation,
104+
backoff.WithBackOff(backoff.NewExponentialBackOff()),
105+
backoff.WithNotify(notify),
103106
)
104107
if err != nil {
105108
return "", errors.Wrapf(err, "Unable to get IP address, retries exhausted")
@@ -130,45 +133,49 @@ func getIPAddress(ctx context.Context, client *http.Client) (string, error) {
130133
}
131134

132135
func setDyndnsIPAddressWithRetry(ctx context.Context, client *http.Client, r DynDNSRequest) error {
133-
err := backoff.RetryNotify(
134-
func() error {
135-
return setDyndnsIPAddress(ctx, client, r)
136-
},
137-
backoff.NewExponentialBackOff(),
138-
func(err error, d time.Duration) {
139-
log.Printf("Unable to set dyndns ip for domain %s: %s, retrying in %s\n", r.DomainName, err, d)
140-
},
136+
operation := func() (string, error) {
137+
return setDyndnsIPAddress(ctx, client, r)
138+
}
139+
notify := func(err error, d time.Duration) {
140+
log.Printf("Unable to set dyndns ip for domain %s: %s, retrying in %s\n", r.DomainName, err, d)
141+
}
142+
143+
result, err := backoff.Retry(
144+
ctx,
145+
operation,
146+
backoff.WithBackOff(backoff.NewExponentialBackOff()),
147+
backoff.WithNotify(notify),
141148
)
142149
if err != nil {
143150
return errors.Wrapf(err, "Unable to set dyndns ip for domain %s, retries exhausted", r.DomainName)
144151
}
152+
log.Printf("Set dyndns ip for domain %s: %s\n", r.DomainName, result)
145153
return nil
146154
}
147155

148-
func setDyndnsIPAddress(ctx context.Context, client *http.Client, r DynDNSRequest) error {
156+
func setDyndnsIPAddress(ctx context.Context, client *http.Client, r DynDNSRequest) (string, error) {
149157
url := fmt.Sprintf("https://www.ovh.com/nic/update?system=dyndns&hostname=%s&myip=%s", r.DomainName, r.IPAddress)
150158
req, err := http.NewRequestWithContext(ctx, "GET", url, nil)
151159
if err != nil {
152-
return errors.Wrapf(err, "Unable to create request to set IP Address for domain: %s", r.DomainName)
160+
return "", errors.Wrapf(err, "Unable to create request to set IP Address for domain: %s", r.DomainName)
153161
}
154162
req.SetBasicAuth(r.Username, r.Password)
155163

156164
resp, err := client.Do(req)
157165
if err != nil {
158-
return errors.Wrapf(err, "Unable to set IP Address for domain: %s", r.DomainName)
166+
return "", errors.Wrapf(err, "Unable to set IP Address for domain: %s", r.DomainName)
159167
}
160168
defer resp.Body.Close()
161169

162170
if resp.StatusCode != 200 {
163-
return fmt.Errorf("Unable to set IP Address for domain, got code: %d", resp.StatusCode)
171+
return "", fmt.Errorf("Unable to set IP Address for domain, got code: %d", resp.StatusCode)
164172
}
165173

166174
body, err := io.ReadAll(resp.Body)
167175
if err != nil {
168-
return errors.Wrapf(err, "Unable to read response body for domain: %s", r.DomainName)
176+
return "", errors.Wrapf(err, "Unable to read response body for domain: %s", r.DomainName)
169177
}
170-
log.Println(string(body))
171-
return nil
178+
return string(body), nil
172179
}
173180

174181
func getDomains() ([]string, bool) {

0 commit comments

Comments
 (0)