Add MarshalJSON support to RRCache

This commit is contained in:
Patrick Pacher 2021-10-15 13:50:53 +02:00
parent 32eb5d3a3b
commit c4ddb7fdcc

View file

@ -2,6 +2,7 @@ package resolver
import (
"context"
"encoding/json"
"fmt"
"net"
"time"
@ -44,6 +45,25 @@ type RRCache struct {
Modified int64
}
func (rrCache *RRCache) MarshalJSON() ([]byte, error) {
var record = struct {
RRCache
Question string
RCode string
Modified time.Time
Expires time.Time
}{
RRCache: *rrCache,
Question: rrCache.Question.String(),
RCode: dns.RcodeToString[rrCache.RCode],
Modified: time.Unix(rrCache.Modified, 0),
Expires: time.Unix(rrCache.Expires, 0),
}
return json.Marshal(record)
}
// ID returns the ID of the RRCache consisting of the domain and question type.
func (rrCache *RRCache) ID() string {
return rrCache.Domain + rrCache.Question.String()