78 lines
1.4 KiB
Go
78 lines
1.4 KiB
Go
package happydomain
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"net/url"
|
|
"path"
|
|
|
|
model "git.happydns.org/happyDomain/model"
|
|
)
|
|
|
|
type Provider struct {
|
|
model.ProviderCombined
|
|
session *HappyDomainAPI
|
|
}
|
|
|
|
func (h *HappyDomainAPI) NewProvider(p *model.ProviderCombined) *Provider {
|
|
return &Provider{
|
|
session: h,
|
|
ProviderCombined: *p,
|
|
}
|
|
}
|
|
|
|
func (p *Provider) getURL() *url.URL {
|
|
u := p.session.API
|
|
u.Path = path.Join(u.Path, "providers", p.ProviderCombined.Id.String())
|
|
|
|
return &u
|
|
}
|
|
|
|
func (p *Provider) DomainAdd(dn string) (Domain, error) {
|
|
formstream := new(bytes.Buffer)
|
|
err := json.NewEncoder(formstream).Encode(model.DomainMinimal{
|
|
IdProvider: p.Id,
|
|
DomainName: dn,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
u := p.session.API
|
|
u.Path = path.Join(u.Path, "domains")
|
|
|
|
resp, err := p.session.DoRequest("POST", &u, formstream)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
return p.session.NewDomainFromModel(resp.Body)
|
|
}
|
|
|
|
func (p *Provider) Update() error {
|
|
formstream := new(bytes.Buffer)
|
|
err := json.NewEncoder(formstream).Encode(p)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
resp, err := p.session.DoRequest("PUT", p.getURL(), formstream)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
return nil
|
|
}
|
|
|
|
func (p *Provider) Delete() error {
|
|
resp, err := p.session.DoRequest("DELETE", p.getURL(), nil)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
return nil
|
|
}
|