encode contacts as hex to be friendly on RPC return

This commit is contained in:
Victor Shyba 2021-10-03 04:49:33 -03:00
parent dd451eb72b
commit 4056c44c2e

View file

@ -2,6 +2,7 @@ package dht
import ( import (
"bytes" "bytes"
"encoding/json"
"net" "net"
"sort" "sort"
"strconv" "strconv"
@ -41,6 +42,20 @@ func (c Contact) String() string {
return str 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 // 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 // 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) { func (c Contact) MarshalCompact() ([]byte, error) {