golang-sdk/service.go

58 lines
1009 B
Go

package happydomain
import (
"bytes"
"encoding/json"
"net/url"
"path"
model "git.happydns.org/happyDomain/model"
)
type Service struct {
session *HappyDomainAPI
parent *Zone
apiService *model.ServiceCombined
}
func (z *Zone) NewService(svc *model.ServiceCombined) *Service {
return &Service{
session: z.session,
parent: z,
apiService: svc,
}
}
func (s *Service) getURL() *url.URL {
u := s.parent.getURL()
u.Path = path.Join(u.Path, s.apiService.Domain, "services", s.apiService.Id.String())
return u
}
func (s *Service) Update() error {
formstream := new(bytes.Buffer)
err := json.NewEncoder(formstream).Encode(s.apiService)
if err != nil {
return err
}
resp, err := s.session.DoRequest("PUT", s.getURL(), formstream)
if err != nil {
return err
}
defer resp.Body.Close()
return nil
}
func (s *Service) Delete() error {
resp, err := s.session.DoRequest("DELETE", s.getURL(), nil)
if err != nil {
return err
}
defer resp.Body.Close()
return nil
}