mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-12-11 14:45:52 +08:00
Update api.go
This commit is contained in:
parent
4f1b150937
commit
540df588fe
1 changed files with 34 additions and 12 deletions
|
|
@ -13,19 +13,33 @@ type dnssecRecord struct {
|
||||||
IsEnabled bool `json:"is_enabled"`
|
IsEnabled bool `json:"is_enabled"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type errorRecord struct {
|
||||||
|
Code string `json:"code"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
}
|
||||||
|
|
||||||
type dnsZoneResponse struct {
|
type dnsZoneResponse struct {
|
||||||
Result string `json:"result"`
|
Result string `json:"result"`
|
||||||
Data dnsZone `json:"data"`
|
Data dnsZone `json:"data,omitempty"`
|
||||||
|
Error errorRecord `json:"error,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type dnsRecordsResponse struct {
|
||||||
|
Result string `json:"result"`
|
||||||
|
Data []dnsRecord `json:"data,omitempty"`
|
||||||
|
Error errorRecord `json:"error,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type dnsRecordResponse struct {
|
type dnsRecordResponse struct {
|
||||||
Result string `json:"result"`
|
Result string `json:"result"`
|
||||||
Data []dnsRecord `json:"data"`
|
Data dnsRecord `json:"data,omitempty"`
|
||||||
|
Error errorRecord `json:"error,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type boolResponse struct {
|
type boolResponse struct {
|
||||||
Result string `json:"result"`
|
Result string `json:"result"`
|
||||||
Data bool `json:"data"`
|
Data bool `json:"data,omitempty"`
|
||||||
|
Error errorRecord `json:"error,omitempty"`
|
||||||
}
|
}
|
||||||
type dnsZone struct {
|
type dnsZone struct {
|
||||||
ID int64 `json:"id,omitempty"`
|
ID int64 `json:"id,omitempty"`
|
||||||
|
|
@ -35,7 +49,7 @@ type dnsZone struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type dnsRecord struct {
|
type dnsRecord struct {
|
||||||
ID string `json:"hostname,omitempty"`
|
ID int64 `json:"id,omitempty"`
|
||||||
Source string `json:"source,omitempty"`
|
Source string `json:"source,omitempty"`
|
||||||
Type string `json:"type,omitempty"`
|
Type string `json:"type,omitempty"`
|
||||||
TTL int64 `json:"ttl,omitempty"`
|
TTL int64 `json:"ttl,omitempty"`
|
||||||
|
|
@ -95,7 +109,7 @@ func (p *infomaniakProvider) getDNSRecords(zone string) ([]dnsRecord, error) {
|
||||||
}
|
}
|
||||||
defer res.Body.Close()
|
defer res.Body.Close()
|
||||||
|
|
||||||
response := &dnsRecordResponse{}
|
response := &dnsRecordsResponse{}
|
||||||
err = json.NewDecoder(res.Body).Decode(response)
|
err = json.NewDecoder(res.Body).Decode(response)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
@ -106,8 +120,8 @@ func (p *infomaniakProvider) getDNSRecords(zone string) ([]dnsRecord, error) {
|
||||||
|
|
||||||
// Delete a dns record
|
// Delete a dns record
|
||||||
// See https://developer.infomaniak.com/docs/api/delete/2/zones/%7Bzone%7D/records/%7Brecord%7D
|
// See https://developer.infomaniak.com/docs/api/delete/2/zones/%7Bzone%7D/records/%7Brecord%7D
|
||||||
func (p *infomaniakProvider) deleteDNSRecord(zone string, record string) error {
|
func (p *infomaniakProvider) deleteDNSRecord(zone string, recordID string) error {
|
||||||
reqURL := fmt.Sprintf("%s/zones/%s/records/%s", baseURL, zone, record)
|
reqURL := fmt.Sprintf("%s/zones/%s/records/%s", baseURL, zone, recordID)
|
||||||
|
|
||||||
req, err := http.NewRequest(http.MethodDelete, reqURL, nil)
|
req, err := http.NewRequest(http.MethodDelete, reqURL, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -128,6 +142,10 @@ func (p *infomaniakProvider) deleteDNSRecord(zone string, record string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if response.Result == "error" {
|
||||||
|
return fmt.Errorf("failed to delete record %s in zone %s: %s", recordID, zone, response.Error.Description)
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -154,11 +172,15 @@ func (p *infomaniakProvider) createDNSRecord(zone string, rec *dnsRecordCreate)
|
||||||
}
|
}
|
||||||
defer res.Body.Close()
|
defer res.Body.Close()
|
||||||
|
|
||||||
record := &dnsRecord{}
|
response := &dnsRecordResponse{}
|
||||||
err = json.NewDecoder(res.Body).Decode(record)
|
err = json.NewDecoder(res.Body).Decode(response)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return record, nil
|
if response.Result == "error" {
|
||||||
|
return nil, fmt.Errorf("failed to create %s record in zone %s: %s", rec.Type, zone, response.Error.Description)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &response.Data, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue