lego/providers/dns/servercow/internal/model.go
2020-05-08 19:35:25 +02:00

58 lines
1 KiB
Go

package internal
import "encoding/json"
// Record is the record representation.
type Record struct {
Name string `json:"name"`
Type string `json:"type"`
TTL int `json:"ttl,omitempty"`
Content Value `json:"content,omitempty"`
}
// Value is the value of a record.
// Allows to handle dynamic type (string and string array).
type Value []string
func (v Value) MarshalJSON() ([]byte, error) {
if len(v) == 0 {
return nil, nil
}
if len(v) == 1 {
return json.Marshal(v[0])
}
content, err := json.Marshal([]string(v))
if err != nil {
return nil, err
}
return content, nil
}
func (v *Value) UnmarshalJSON(b []byte) error {
if b[0] == '[' {
return json.Unmarshal(b, (*[]string)(v))
}
var s string
if err := json.Unmarshal(b, &s); err != nil {
return err
}
*v = append(*v, s)
return nil
}
// Message is the basic response representation.
// Can be an error.
type Message struct {
Message string `json:"message,omitempty"`
ErrorMsg string `json:"error,omitempty"`
}
func (a Message) Error() string {
return a.ErrorMsg
}