package auroradns import ( "bytes" "encoding/json" "fmt" "net/http" ) // Zone a DNS zone type Zone struct { ID string `json:"id,omitempty"` Name string `json:"name"` } // CreateZone Creates a zone. func (c *Client) CreateZone(domain string) (*Zone, *http.Response, error) { body, err := json.Marshal(Zone{Name: domain}) if err != nil { return nil, nil, fmt.Errorf("failed to marshall request body: %v", err) } req, err := c.newRequest(http.MethodPost, "/zones", bytes.NewReader(body)) if err != nil { return nil, nil, err } zone := new(Zone) resp, err := c.do(req, zone) if err != nil { return nil, resp, err } return zone, resp, nil } // DeleteZone Delete a zone. func (c *Client) DeleteZone(zoneID string) (bool, *http.Response, error) { resource := fmt.Sprintf("/zones/%s", zoneID) req, err := c.newRequest(http.MethodDelete, resource, nil) if err != nil { return false, nil, err } resp, err := c.do(req, nil) if err != nil { return false, resp, err } return true, resp, nil } // ListZones returns a list of all zones. func (c *Client) ListZones() ([]Zone, *http.Response, error) { req, err := c.newRequest(http.MethodGet, "/zones", nil) if err != nil { return nil, nil, err } var zones []Zone resp, err := c.do(req, &zones) if err != nil { return nil, resp, err } return zones, resp, nil }