70 lines
2.3 KiB
Go
70 lines
2.3 KiB
Go
package dnsimple
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
func domainServicesPath(accountID string, domainIdentifier string, serviceIdentifier string) string {
|
|
if serviceIdentifier != "" {
|
|
return fmt.Sprintf("/%v/domains/%v/services/%v", accountID, domainIdentifier, serviceIdentifier)
|
|
}
|
|
return fmt.Sprintf("/%v/domains/%v/services", accountID, domainIdentifier)
|
|
}
|
|
|
|
// DomainServiceSettings represents optional settings when applying a DNSimple one-click service to a domain.
|
|
type DomainServiceSettings struct {
|
|
Settings map[string]string `url:"settings,omitempty"`
|
|
}
|
|
|
|
// AppliedServices lists the applied one-click services for a domain.
|
|
//
|
|
// See https://developer.dnsimple.com/v2/services/domains/#applied
|
|
func (s *ServicesService) AppliedServices(accountID string, domainIdentifier string, options *ListOptions) (*servicesResponse, error) {
|
|
path := versioned(domainServicesPath(accountID, domainIdentifier, ""))
|
|
servicesResponse := &servicesResponse{}
|
|
|
|
path, err := addURLQueryOptions(path, options)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
resp, err := s.client.get(path, servicesResponse)
|
|
if err != nil {
|
|
return servicesResponse, err
|
|
}
|
|
|
|
servicesResponse.HttpResponse = resp
|
|
return servicesResponse, nil
|
|
}
|
|
|
|
// ApplyService applies a one-click services to a domain.
|
|
//
|
|
// See https://developer.dnsimple.com/v2/services/domains/#apply
|
|
func (s *ServicesService) ApplyService(accountID string, serviceIdentifier string, domainIdentifier string, settings DomainServiceSettings) (*serviceResponse, error) {
|
|
path := versioned(domainServicesPath(accountID, domainIdentifier, serviceIdentifier))
|
|
serviceResponse := &serviceResponse{}
|
|
|
|
resp, err := s.client.post(path, settings, nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
serviceResponse.HttpResponse = resp
|
|
return serviceResponse, nil
|
|
}
|
|
|
|
// UnapplyService unapplies a one-click services from a domain.
|
|
//
|
|
// See https://developer.dnsimple.com/v2/services/domains/#unapply
|
|
func (s *ServicesService) UnapplyService(accountID string, serviceIdentifier string, domainIdentifier string) (*serviceResponse, error) {
|
|
path := versioned(domainServicesPath(accountID, domainIdentifier, serviceIdentifier))
|
|
serviceResponse := &serviceResponse{}
|
|
|
|
resp, err := s.client.delete(path, nil, nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
serviceResponse.HttpResponse = resp
|
|
return serviceResponse, nil
|
|
}
|