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