diff --git a/dht/contact.go b/dht/contact.go index 79434e4..53fcd23 100644 --- a/dht/contact.go +++ b/dht/contact.go @@ -2,6 +2,7 @@ package dht import ( "bytes" + "encoding/json" "net" "sort" "strconv" @@ -41,6 +42,20 @@ func (c Contact) String() string { return str } +func (c Contact) MarshalJSON() ([]byte, error) { + return json.Marshal(&struct { + ID string + IP string + Port int + PeerPort int + }{ + ID: c.ID.Hex(), + IP: c.IP.String(), + Port: c.Port, + PeerPort: c.PeerPort, + }) +} + // MarshalCompact returns a compact byteslice representation of the contact // NOTE: The compact representation always uses the tcp PeerPort, not the udp Port. This is dumb, but that's how the python daemon does it func (c Contact) MarshalCompact() ([]byte, error) {