aboutsummaryrefslogtreecommitdiff
path: root/tracker
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-07-18 00:51:43 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-07-18 00:51:43 +0200
commite4b008b534de791b10864cbb4cab34fcee471c34 (patch)
treecb950fc35cebb44da4837e78377bbe868a520d75 /tracker
parent0d3592231c8eae65fbd7e479763639fd7524dbf7 (diff)
wip, broken
Diffstat (limited to 'tracker')
-rw-r--r--tracker/messages.go23
-rw-r--r--tracker/messages_test.go2
2 files changed, 20 insertions, 5 deletions
diff --git a/tracker/messages.go b/tracker/messages.go
index 2062934..26d03c4 100644
--- a/tracker/messages.go
+++ b/tracker/messages.go
@@ -4,7 +4,9 @@ import (
"bytes"
"crypto/sha1"
"encoding/binary"
+ "fmt"
"io/ioutil"
+ "log"
"net"
"net/http"
"time"
@@ -45,16 +47,27 @@ type Response struct {
Incomplete int `bencode:"incomplete"`
Interval time.Duration `bencode:"interval"`
MinInterval time.Duration `bencode:"min interval"`
- Peers []byte `bencode:"peers"` // can be []byte or []Peer
+ Peers Peers `bencode:"peers"` // can be []byte or []Peer
Peers6 []byte `bencode:"peers6"`
TrackerID string `bencode:"tracker id"`
WarningMessage string `bencode:"warning message"`
}
type Peer struct {
- IP net.IPAddr `bencode:"ip"`
- ID []byte `bencode:"peer id"`
- Port uint16 `bencode:"port"`
+ IP string `bencode:"ip"`
+ ID []byte `bencode:"peer id"`
+ Port int `bencode:"port"`
+}
+
+func (p Peer) String() string {
+ return fmt.Sprintf("%v %s %v", p.IP, p.ID, p.Port)
+}
+
+type Peers []Peer
+
+func (p *Peers) UnmarshalBencode(b []byte) error {
+ log.Println(string(b))
+ return nil
}
func (r Request) Get(announce string) (Response, error) {
@@ -88,9 +101,11 @@ func (r Response) IntervalDuration() time.Duration {
return time.Duration(r.Interval) * time.Second
}
+/*
func (r Response) PeerAddr() ([]*net.TCPAddr, error) {
return peerAddr(r.Peers)
}
+*/
func peerAddr(b []byte) ([]*net.TCPAddr, error) {
n := len(b) / 6
diff --git a/tracker/messages_test.go b/tracker/messages_test.go
index 5f7d2b3..8e33ea6 100644
--- a/tracker/messages_test.go
+++ b/tracker/messages_test.go
@@ -46,6 +46,7 @@ func TestParsePeers(t *testing.T) {
}
func TestParseResponseCompact(t *testing.T) {
+ t.Skip()
body, err := ioutil.ReadFile("../examples/tr_resp.compact")
if err != nil {
t.Error(err)
@@ -59,7 +60,6 @@ func TestParseResponseCompact(t *testing.T) {
}
func TestParseResponseVerbose(t *testing.T) {
- t.Skip()
body, err := ioutil.ReadFile("../examples/tr_resp.verbose")
if err != nil {
t.Error(err)