diff options
| author | Shulhan <ms@kilabit.info> | 2022-05-14 00:22:27 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2022-05-14 01:22:49 +0700 |
| commit | e4581728e5c6fd9287e2e60aa908b89cbf6feeaf (patch) | |
| tree | eca7ae915842aaffaabaffddb5e2eff326f759be /client.go | |
| parent | 69f34312061d5e5ef853fa28e271d93dbcfbbc6c (diff) | |
| download | rescached-e4581728e5c6fd9287e2e60aa908b89cbf6feeaf.tar.xz | |
cmd/resolver: implement command to create and delete zone file
The command to create new zone file has the following signature:
zone.d create <name>
While command to delete zone file has the following signature:
zone.d delete <name>
Diffstat (limited to 'client.go')
| -rw-r--r-- | client.go | 62 |
1 files changed, 62 insertions, 0 deletions
@@ -411,3 +411,65 @@ func (cl *Client) HostsdRecordDelete(hostsName, domain string) (record *dns.Reso return record, nil } + +// ZonedCreate create new zone file. +func (cl *Client) ZonedCreate(name string) (zone *dns.Zone, err error) { + var ( + logp = "ZonedCreate" + res = libhttp.EndpointResponse{ + Data: &zone, + } + params = url.Values{} + + resb []byte + ) + + params.Set(paramNameName, name) + + _, resb, err = cl.PostForm(apiZoned, nil, params) + if err != nil { + return nil, fmt.Errorf("%s: %w", logp, err) + } + + err = json.Unmarshal(resb, &res) + if err != nil { + return nil, fmt.Errorf("%s: %w", logp, err) + } + if res.Code != http.StatusOK { + return nil, fmt.Errorf("%s: %d %s", logp, res.Code, res.Message) + } + return zone, nil +} + +// ZonedDelete delete zone file by name. +func (cl *Client) ZonedDelete(name string) (zone *dns.Zone, err error) { + var ( + logp = "ZonedDelete" + res = libhttp.EndpointResponse{ + Data: &zone, + } + params = url.Values{} + + httpRes *http.Response + resb []byte + ) + + params.Set(paramNameName, name) + + httpRes, resb, err = cl.Delete(apiZoned, nil, params) + if err != nil { + return nil, fmt.Errorf("%s: %w", logp, err) + } + if httpRes.StatusCode != http.StatusOK { + return nil, fmt.Errorf("%s: %s", logp, httpRes.Status) + } + + err = json.Unmarshal(resb, &res) + if err != nil { + return nil, fmt.Errorf("%s: %w", logp, err) + } + if res.Code != http.StatusOK { + return nil, fmt.Errorf("%s: %d %s", logp, res.Code, res.Message) + } + return zone, nil +} |
