traefik/vendor/github.com/timewasted/linode/dns/domain.go
2017-03-09 13:13:02 +01:00

64 lines
1.6 KiB
Go

package dns
import (
"errors"
"strconv"
"strings"
"github.com/timewasted/linode"
)
type (
// Domain represents a domain.
Domain struct {
AXFR_IPs string `json:"AXFR_IPS"`
Description string `json:"DESCRIPTION"`
Domain string `json:"DOMAIN"`
DomainID int `json:"DOMAINID"`
Expire_Sec int `json:"EXPIRE_SEC"`
LPM_DisplayGroup string `json:"LPM_DISPLAYGROUP"`
Master_IPs string `json:"MASTER_IPS"`
Refresh_Sec int `json:"REFRESH_SEC"`
Retry_Sec int `json:"RETRY_SEC"`
SOA_Email string `json:"SOA_EMAIL"`
Status int `json:"STATUS"`
TTL_Sec int `json:"TTL_SEC"`
Type string `json:"TYPE"`
}
// DomainResponse represents the response to a create, update, or
// delete domain API call.
DomainResponse struct {
DomainID int `json:"DomainID"`
}
)
// DeleteDomain executes the "domain.delete" API call. This will delete the
// domain specified by domainID.
func (d *DNS) DeleteDomain(domainID int) (*DomainResponse, error) {
params := linode.Parameters{
"DomainID": strconv.Itoa(domainID),
}
var response *DomainResponse
_, err := d.linode.Request("domain.delete", params, &response)
if err != nil {
return nil, err
}
return response, nil
}
// GetDomain returns the specified domain. This search is not case-sensitive.
func (d *DNS) GetDomain(domain string) (*Domain, error) {
list, err := d.GetDomains(nil)
if err != nil {
return nil, err
}
for _, d := range list {
if strings.EqualFold(d.Domain, domain) {
return d, nil
}
}
return nil, linode.NewError(errors.New("dns: requested domain not found"))
}