6 "github.com/anacrolix/dht/v2/krpc"
8 "github.com/anacrolix/torrent/bencode"
11 type HttpResponse struct {
12 FailureReason string `bencode:"failure reason"`
13 Interval int32 `bencode:"interval"`
14 TrackerId string `bencode:"tracker id"`
15 Complete int32 `bencode:"complete"`
16 Incomplete int32 `bencode:"incomplete"`
17 Peers Peers `bencode:"peers"`
19 Peers6 krpc.CompactIPv6NodeAddrs `bencode:"peers6"`
24 func (me *Peers) UnmarshalBencode(b []byte) (err error) {
26 err = bencode.Unmarshal(b, &_v)
30 switch v := _v.(type) {
32 vars.Add("http responses with string peers", 1)
33 var cnas krpc.CompactIPv4NodeAddrs
34 err = cnas.UnmarshalBinary([]byte(v))
38 for _, cp := range cnas {
39 *me = append(*me, Peer{
46 vars.Add("http responses with list peers", 1)
49 p.FromDictInterface(i.(map[string]interface{}))
54 vars.Add("http responses with unhandled peers type", 1)
55 err = fmt.Errorf("unsupported type: %T", _v)