terraform/vendor/github.com/maximilien/softlayer-go/services/softlayer_dns_domain.go

114 lines
3.5 KiB
Go

package services
import (
"bytes"
"encoding/json"
"errors"
"fmt"
common "github.com/maximilien/softlayer-go/common"
datatypes "github.com/maximilien/softlayer-go/data_types"
softlayer "github.com/maximilien/softlayer-go/softlayer"
)
type softLayer_Dns_Domain_Service struct {
client softlayer.Client
}
func NewSoftLayer_Dns_Domain_Service(client softlayer.Client) *softLayer_Dns_Domain_Service {
return &softLayer_Dns_Domain_Service{
client: client,
}
}
func (sldds *softLayer_Dns_Domain_Service) GetName() string {
return "SoftLayer_Dns_Domain"
}
func (sldds *softLayer_Dns_Domain_Service) CreateObject(template datatypes.SoftLayer_Dns_Domain_Template) (datatypes.SoftLayer_Dns_Domain, error) {
if template.ResourceRecords == nil {
template.ResourceRecords = []datatypes.SoftLayer_Dns_Domain_ResourceRecord{}
}
parameters := datatypes.SoftLayer_Dns_Domain_Template_Parameters{
Parameters: []datatypes.SoftLayer_Dns_Domain_Template{
template,
},
}
requestBody, err := json.Marshal(parameters)
if err != nil {
return datatypes.SoftLayer_Dns_Domain{}, err
}
response, errorCode, err := sldds.client.GetHttpClient().DoRawHttpRequest(fmt.Sprintf("%s.json", sldds.GetName()), "POST", bytes.NewBuffer(requestBody))
if err != nil {
return datatypes.SoftLayer_Dns_Domain{}, err
}
if common.IsHttpErrorCode(errorCode) {
errorMessage := fmt.Sprintf("softlayer-go: could not SoftLayer_Dns_Domain#createObject, HTTP error code: '%d'", errorCode)
return datatypes.SoftLayer_Dns_Domain{}, errors.New(errorMessage)
}
err = sldds.client.GetHttpClient().CheckForHttpResponseErrors(response)
if err != nil {
return datatypes.SoftLayer_Dns_Domain{}, err
}
softLayer_Dns_Domain := datatypes.SoftLayer_Dns_Domain{}
err = json.Unmarshal(response, &softLayer_Dns_Domain)
if err != nil {
return datatypes.SoftLayer_Dns_Domain{}, err
}
return softLayer_Dns_Domain, nil
}
func (sldds *softLayer_Dns_Domain_Service) GetObject(dnsId int) (datatypes.SoftLayer_Dns_Domain, error) {
objectMask := []string{
"id",
"name",
"serial",
"updateDate",
"account",
"managedResourceFlag",
"resourceRecordCount",
"resourceRecords",
"secondary",
}
response, errorCode, err := sldds.client.GetHttpClient().DoRawHttpRequestWithObjectMask(fmt.Sprintf("%s/%d/getObject.json", sldds.GetName(), dnsId), objectMask, "GET", new(bytes.Buffer))
if err != nil {
return datatypes.SoftLayer_Dns_Domain{}, err
}
if common.IsHttpErrorCode(errorCode) {
errorMessage := fmt.Sprintf("softlayer-go: could not SoftLayer_Dns_Domain#getObject, HTTP error code: '%d'", errorCode)
return datatypes.SoftLayer_Dns_Domain{}, errors.New(errorMessage)
}
dns_domain := datatypes.SoftLayer_Dns_Domain{}
err = json.Unmarshal(response, &dns_domain)
if err != nil {
return datatypes.SoftLayer_Dns_Domain{}, err
}
return dns_domain, nil
}
func (sldds *softLayer_Dns_Domain_Service) DeleteObject(dnsId int) (bool, error) {
response, errorCode, err := sldds.client.GetHttpClient().DoRawHttpRequest(fmt.Sprintf("%s/%d.json", sldds.GetName(), dnsId), "DELETE", new(bytes.Buffer))
if response_value := string(response[:]); response_value != "true" {
return false, errors.New(fmt.Sprintf("Failed to delete dns domain with id '%d', got '%s' as response from the API", dnsId, response_value))
}
if common.IsHttpErrorCode(errorCode) {
errorMessage := fmt.Sprintf("softlayer-go: could not SoftLayer_Dns_Domain#deleteObject, HTTP error code: '%d'", errorCode)
return false, errors.New(errorMessage)
}
return true, err
}