1package dnsimple 2 3import ( 4 "context" 5 "fmt" 6) 7 8func domainServicesPath(accountID string, domainIdentifier string, serviceIdentifier string) string { 9 if serviceIdentifier != "" { 10 return fmt.Sprintf("/%v/domains/%v/services/%v", accountID, domainIdentifier, serviceIdentifier) 11 } 12 return fmt.Sprintf("/%v/domains/%v/services", accountID, domainIdentifier) 13} 14 15// DomainServiceSettings represents optional settings when applying a DNSimple one-click service to a domain. 16type DomainServiceSettings struct { 17 Settings map[string]string `url:"settings,omitempty"` 18} 19 20// AppliedServices lists the applied one-click services for a domain. 21// 22// See https://developer.dnsimple.com/v2/services/domains/#applied 23func (s *ServicesService) AppliedServices(ctx context.Context, accountID string, domainIdentifier string, options *ListOptions) (*ServicesResponse, error) { 24 path := versioned(domainServicesPath(accountID, domainIdentifier, "")) 25 servicesResponse := &ServicesResponse{} 26 27 path, err := addURLQueryOptions(path, options) 28 if err != nil { 29 return nil, err 30 } 31 32 resp, err := s.client.get(ctx, path, servicesResponse) 33 if err != nil { 34 return servicesResponse, err 35 } 36 37 servicesResponse.HTTPResponse = resp 38 return servicesResponse, nil 39} 40 41// ApplyService applies a one-click services to a domain. 42// 43// See https://developer.dnsimple.com/v2/services/domains/#apply 44func (s *ServicesService) ApplyService(ctx context.Context, accountID string, serviceIdentifier string, domainIdentifier string, settings DomainServiceSettings) (*ServiceResponse, error) { 45 path := versioned(domainServicesPath(accountID, domainIdentifier, serviceIdentifier)) 46 serviceResponse := &ServiceResponse{} 47 48 resp, err := s.client.post(ctx, path, settings, nil) 49 if err != nil { 50 return nil, err 51 } 52 53 serviceResponse.HTTPResponse = resp 54 return serviceResponse, nil 55} 56 57// UnapplyService unapplies a one-click services from a domain. 58// 59// See https://developer.dnsimple.com/v2/services/domains/#unapply 60func (s *ServicesService) UnapplyService(ctx context.Context, accountID string, serviceIdentifier string, domainIdentifier string) (*ServiceResponse, error) { 61 path := versioned(domainServicesPath(accountID, domainIdentifier, serviceIdentifier)) 62 serviceResponse := &ServiceResponse{} 63 64 resp, err := s.client.delete(ctx, path, nil, nil) 65 if err != nil { 66 return nil, err 67 } 68 69 serviceResponse.HTTPResponse = resp 70 return serviceResponse, nil 71} 72