dnssec.go raw
1 package rest
2
3 import (
4 "errors"
5 "fmt"
6 "net/http"
7
8 "gopkg.in/ns1/ns1-go.v2/rest/model/dns"
9 )
10
11 // DNSSECService handles 'zones/ZONE/dnssec' endpoint.
12 type DNSSECService service
13
14 // Get takes a zone, and returns DNSSEC information.
15 //
16 // NS1 API docs: https://ns1.com/api#get-get-dnssec-details-for-a-zone
17 func (s *DNSSECService) Get(zone string) (*dns.ZoneDNSSEC, *http.Response, error) {
18 path := fmt.Sprintf("zones/%s/dnssec", zone)
19
20 req, err := s.client.NewRequest("GET", path, nil)
21 if err != nil {
22 return nil, nil, err
23 }
24
25 var d dns.ZoneDNSSEC
26 resp, err := s.client.Do(req, &d)
27
28 if err != nil {
29 switch err.(type) {
30 case *Error:
31 if err.(*Error).Message == "zone not found" {
32 return nil, resp, ErrZoneMissing
33 }
34 if err.(*Error).Message == "DNSSEC is not enabled on the zone" {
35 return nil, resp, ErrDNSECNotEnabled
36 }
37 }
38 return nil, resp, err
39 }
40
41 return &d, resp, nil
42 }
43
44 var (
45 // ErrDNSECNotEnabled if DNSSEC is not enabled for the zone, regardless of
46 // account-level DNSSEC permission.
47 ErrDNSECNotEnabled = errors.New("DNSSEC is not enabled on the zone")
48 )
49