1
0
mirror of https://github.com/StackExchange/dnscontrol.git synced 2024-05-11 05:55:12 +00:00
Files
stackexchange-dnscontrol/vendor/github.com/namedotcom/go/namecom/dnssecs.go
Pat Moroney 716cc0843a Namecom v4 api (#298)
* new Name.com api version and go client library
* vendor github.com/namedotcom/go/namecom
2018-01-10 16:49:20 -05:00

103 lines
2.0 KiB
Go

package namecom
import (
"bytes"
"encoding/json"
"fmt"
"net/url"
)
var _ = bytes.MinRead
// ListDNSSECs lists all of the DNSSEC keys registered with the registry.
func (n *NameCom) ListDNSSECs(request *ListDNSSECsRequest) (*ListDNSSECsResponse, error) {
endpoint := fmt.Sprintf("/v4/domains/%s/dnssec", request.DomainName)
values := url.Values{}
body, err := n.get(endpoint, values)
if err != nil {
return nil, err
}
resp := &ListDNSSECsResponse{}
err = json.NewDecoder(body).Decode(resp)
if err != nil {
return nil, err
}
return resp, nil
}
// GetDNSSEC retrieves the details for a key registered with the registry.
func (n *NameCom) GetDNSSEC(request *GetDNSSECRequest) (*DNSSEC, error) {
endpoint := fmt.Sprintf("/v4/domains/%s/dnssec/%s", request.DomainName, request.Digest)
values := url.Values{}
body, err := n.get(endpoint, values)
if err != nil {
return nil, err
}
resp := &DNSSEC{}
err = json.NewDecoder(body).Decode(resp)
if err != nil {
return nil, err
}
return resp, nil
}
// CreateDNSSEC registers a DNSSEC key with the registry.
func (n *NameCom) CreateDNSSEC(request *DNSSEC) (*DNSSEC, error) {
endpoint := fmt.Sprintf("/v4/domains/%s/dnssec", request.DomainName)
post := &bytes.Buffer{}
err := json.NewEncoder(post).Encode(request)
if err != nil {
return nil, err
}
body, err := n.post(endpoint, post)
if err != nil {
return nil, err
}
resp := &DNSSEC{}
err = json.NewDecoder(body).Decode(resp)
if err != nil {
return nil, err
}
return resp, nil
}
// DeleteDNSSEC removes a DNSSEC key from the registry.
func (n *NameCom) DeleteDNSSEC(request *DeleteDNSSECRequest) (*EmptyResponse, error) {
endpoint := fmt.Sprintf("/v4/domains/%s/dnssec/%s", request.DomainName, request.Digest)
post := &bytes.Buffer{}
err := json.NewEncoder(post).Encode(request)
if err != nil {
return nil, err
}
body, err := n.delete(endpoint, post)
if err != nil {
return nil, err
}
resp := &EmptyResponse{}
err = json.NewDecoder(body).Decode(resp)
if err != nil {
return nil, err
}
return resp, nil
}