Skip to content

Commit ace18e8

Browse files
authored
Merge pull request #6 from hugomd/chore/refactor-to-remove-panic
Refactor to remove panic in favour of returning error
2 parents 0cf8a68 + 45d16b8 commit ace18e8

File tree

2 files changed

+11
-59
lines changed

2 files changed

+11
-59
lines changed

lib/providers/cloudflare/api.go

-49
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"fmt"
77
"io"
88
"io/ioutil"
9-
"log"
109
"net/http"
1110
)
1211

@@ -55,54 +54,6 @@ func NewCloudflareClient(key string, email string, zone string, host string) (*C
5554
return &api, nil
5655
}
5756

58-
func (api *CloudflareAPI) UpdateRecord(ip string) error {
59-
zones, err := api.ListZones()
60-
if err != nil {
61-
panic(err)
62-
}
63-
64-
var zone Zone
65-
66-
for i := range zones {
67-
if zones[i].Name == api.Zone {
68-
zone = zones[i]
69-
}
70-
}
71-
72-
if zone == (Zone{}) {
73-
panic("Zone not found")
74-
}
75-
76-
records, err := api.ListDNSRecords(zone)
77-
if err != nil {
78-
panic(err)
79-
}
80-
81-
var record Record
82-
for i := range records {
83-
if records[i].Name == api.Host {
84-
record = records[i]
85-
}
86-
}
87-
88-
if record == (Record{}) {
89-
panic("Host not found")
90-
}
91-
92-
if ip != record.Content {
93-
record.Content = ip
94-
err = api.UpdateDNSRecord(record, zone)
95-
if err != nil {
96-
panic(err)
97-
}
98-
log.Printf("Updated IP to %s", ip)
99-
} else {
100-
log.Print("No change in IP, not updating record")
101-
}
102-
103-
return nil
104-
}
105-
10657
func (api *CloudflareAPI) ListZones() ([]Zone, error) {
10758
uri := fmt.Sprintf("/zones?name=%s", api.Zone)
10859
resp, err := api.request("GET", uri, nil)

lib/providers/cloudflare/cloudflare.go

+11-10
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package cloudflare
22

33
import (
4+
"errors"
45
"github.com/hugomd/cloudflare-ddns/lib/providers"
56
"log"
67
"os"
@@ -19,27 +20,27 @@ var ZONE, HOST string
1920
func NewProvider() (providers.Provider, error) {
2021
APIKEY := os.Getenv("CLOUDFLARE_APIKEY")
2122
if APIKEY == "" {
22-
log.Fatal("APIKEY env. variable is required")
23+
log.Fatal("CLOUDFLARE_APIKEY env. variable is required")
2324
}
2425

2526
ZONE = os.Getenv("CLOUDFLARE_ZONE")
2627
if APIKEY == "" {
27-
log.Fatal("ZONE env. variable is required")
28+
log.Fatal("CLOUDFLARE_ZONE env. variable is required")
2829
}
2930

3031
HOST = os.Getenv("CLOUDFLARE_HOST")
3132
if HOST == "" {
32-
log.Fatal("HOST env. variable is required")
33+
log.Fatal("CLOUDFLARE_HOST env. variable is required")
3334
}
3435

3536
EMAIL := os.Getenv("CLOUDFLARE_EMAIL")
3637
if EMAIL == "" {
37-
log.Fatal("EMAIL env. variable is required")
38+
log.Fatal("CLOUDFLARE_EMAIL env. variable is required")
3839
}
3940

4041
api, err := NewCloudflareClient(APIKEY, EMAIL, ZONE, HOST)
4142
if err != nil {
42-
panic(err)
43+
return nil, err
4344
}
4445

4546
provider := &Cloudflare{
@@ -52,7 +53,7 @@ func NewProvider() (providers.Provider, error) {
5253
func (api *Cloudflare) UpdateRecord(ip string) error {
5354
zones, err := api.client.ListZones()
5455
if err != nil {
55-
panic(err)
56+
return err
5657
}
5758

5859
var zone Zone
@@ -64,12 +65,12 @@ func (api *Cloudflare) UpdateRecord(ip string) error {
6465
}
6566

6667
if zone == (Zone{}) {
67-
panic("Zone not found")
68+
return errors.New("Zone not found")
6869
}
6970

7071
records, err := api.client.ListDNSRecords(zone)
7172
if err != nil {
72-
panic(err)
73+
return err
7374
}
7475

7576
var record Record
@@ -80,14 +81,14 @@ func (api *Cloudflare) UpdateRecord(ip string) error {
8081
}
8182

8283
if record == (Record{}) {
83-
panic("Host not found")
84+
return errors.New("Host not found")
8485
}
8586

8687
if ip != record.Content {
8788
record.Content = ip
8889
err = api.client.UpdateDNSRecord(record, zone)
8990
if err != nil {
90-
panic(err)
91+
return err
9192
}
9293
log.Printf("IP changed, updated to %s", ip)
9394
} else {

0 commit comments

Comments
 (0)