From f77229703abd40ab6449df0e646fa82a6ee92485 Mon Sep 17 00:00:00 2001 From: Buddy Sandidge Date: Wed, 23 Nov 2016 13:35:02 -0800 Subject: [PATCH] Refactor main.go to make easier to read --- main.go | 70 +++++++++++++++++++++++---------------------------------- 1 file changed, 28 insertions(+), 42 deletions(-) diff --git a/main.go b/main.go index dfa9b96..a780c3e 100644 --- a/main.go +++ b/main.go @@ -108,61 +108,32 @@ func action(context *cli.Context) error { kind := context.Generic("type").(*typeFlag).value ttl := context.Int("ttl") - wg.Add(1) - ipClient := &ip.Client{ - URLv4: context.String("get-ipv4-url"), - URLv6: context.String("get-ipv6-url"), - } - - var getIPError error var content string + var getContentError error + wg.Add(1) go func() { defer wg.Done() - - var err error - result := context.String("content") - - switch kind { - case "A": - if result == "" { - result, err = ipClient.GetIPv4() - } - case "AAAA": - if result == "" { - result, err = ipClient.GetIPv6() - } - default: - if result == "" { - err = errors.Errorf("could not get content for type %s", kind) - return - } - } - - if err != nil { - getIPError = errors.Wrap(err, "could not get IP address") - } else { - content = result + ipClient := &ip.Client{ + URLv4: context.String("get-ipv4-url"), + URLv6: context.String("get-ipv6-url"), } + content, getContentError = getContent(ipClient, kind, context.String("content")) }() - client := dns.New(context.String("dnsimple-token")) + dnsClient := dns.New(context.String("dnsimple-token")) + records := []dns.Record{} var getRecordsError error - wg.Add(1) go func() { defer wg.Done() - if results, err := client.GetRecords(host, kind); err != nil { - getRecordsError = errors.Wrap(err, "could not get records for host") - } else { - records = results - } + records, getRecordsError = dnsClient.GetRecords(host, kind) }() wg.Wait() - if getIPError != nil { - return errors.Wrap(getIPError, "could no get ip address") + if getContentError != nil { + return errors.Wrap(getContentError, "could no get ip address") } if getRecordsError != nil { @@ -175,7 +146,7 @@ func action(context *cli.Context) error { } newRecord := dns.Record{Type: kind, Content: content, TTL: ttl} - if err := client.CreateRecord(host, newRecord); err != nil { + if err := dnsClient.CreateRecord(host, newRecord); err != nil { return errors.Wrap(err, "could not create record") } @@ -187,10 +158,25 @@ func action(context *cli.Context) error { go func(r dns.Record) { defer deleteWG.Done() fmt.Printf("%s record for %s being deleting %s\n", r.Type, host, r.Content) - client.DeleteRecord(r) + dnsClient.DeleteRecord(r) }(record) } deleteWG.Wait() return nil } + +func getContent(client *ip.Client, kind, content string) (string, error) { + if content != "" { + return content, nil + } + + switch kind { + case "A": + return client.GetIPv4() + case "AAAA": + return client.GetIPv6() + default: + return "", errors.Errorf("could not get content for type %s", kind) + } +}