1package namecom
2
3import (
4	"bytes"
5	"encoding/json"
6	"fmt"
7	"net/url"
8)
9
10var _ = bytes.MinRead
11
12// ListDNSSECs lists all of the DNSSEC keys registered with the registry.
13func (n *NameCom) ListDNSSECs(request *ListDNSSECsRequest) (*ListDNSSECsResponse, error) {
14	endpoint := fmt.Sprintf("/v4/domains/%s/dnssec", request.DomainName)
15
16	values := url.Values{}
17
18	body, err := n.get(endpoint, values)
19	if err != nil {
20		return nil, err
21	}
22
23	resp := &ListDNSSECsResponse{}
24
25	err = json.NewDecoder(body).Decode(resp)
26	if err != nil {
27		return nil, err
28	}
29
30	return resp, nil
31}
32
33// GetDNSSEC retrieves the details for a key registered with the registry.
34func (n *NameCom) GetDNSSEC(request *GetDNSSECRequest) (*DNSSEC, error) {
35	endpoint := fmt.Sprintf("/v4/domains/%s/dnssec/%s", request.DomainName, request.Digest)
36
37	values := url.Values{}
38
39	body, err := n.get(endpoint, values)
40	if err != nil {
41		return nil, err
42	}
43
44	resp := &DNSSEC{}
45
46	err = json.NewDecoder(body).Decode(resp)
47	if err != nil {
48		return nil, err
49	}
50
51	return resp, nil
52}
53
54// CreateDNSSEC registers a DNSSEC key with the registry.
55func (n *NameCom) CreateDNSSEC(request *DNSSEC) (*DNSSEC, error) {
56	endpoint := fmt.Sprintf("/v4/domains/%s/dnssec", request.DomainName)
57
58	post := &bytes.Buffer{}
59	err := json.NewEncoder(post).Encode(request)
60	if err != nil {
61		return nil, err
62	}
63
64	body, err := n.post(endpoint, post)
65	if err != nil {
66		return nil, err
67	}
68
69	resp := &DNSSEC{}
70
71	err = json.NewDecoder(body).Decode(resp)
72	if err != nil {
73		return nil, err
74	}
75
76	return resp, nil
77}
78
79// DeleteDNSSEC removes a DNSSEC key from the registry.
80func (n *NameCom) DeleteDNSSEC(request *DeleteDNSSECRequest) (*EmptyResponse, error) {
81	endpoint := fmt.Sprintf("/v4/domains/%s/dnssec/%s", request.DomainName, request.Digest)
82
83	post := &bytes.Buffer{}
84	err := json.NewEncoder(post).Encode(request)
85	if err != nil {
86		return nil, err
87	}
88
89	body, err := n.delete(endpoint, post)
90	if err != nil {
91		return nil, err
92	}
93
94	resp := &EmptyResponse{}
95
96	err = json.NewDecoder(body).Decode(resp)
97	if err != nil {
98		return nil, err
99	}
100
101	return resp, nil
102}
103