aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-07-17 17:01:49 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-07-17 17:01:49 +0200
commit12418c5c5e523d664af70d578e86b4bb9ab97918 (patch)
treebf43fc7ca89ab7a8f71060324dd4ee172a2669fa
parent896f99551ce39387afb3ff14410c925b05eada0c (diff)
wip, broken
-rw-r--r--tracker/messages.go18
-rw-r--r--tracker/messages_test.go34
2 files changed, 42 insertions, 10 deletions
diff --git a/tracker/messages.go b/tracker/messages.go
index d9871f9..d4b71d9 100644
--- a/tracker/messages.go
+++ b/tracker/messages.go
@@ -40,15 +40,15 @@ type Request struct {
// we support only compact mode
type Response struct {
- Complete int `bencode:"complete"`
- FalureReason string `bencode:"failure reason"`
- Incomplete int `bencode:"incomplete"`
- Interval int `bencode:"interval"`
- MinInterval int `bencode:"min interval"`
- Peers []byte `bencode:"peers"` // can be []byte or []Peer
- Peers6 []byte `bencode:"peers6"`
- TrackerId string `bencode:"tracker id"`
- WarningMessage string `bencode:"warning message"`
+ Complete int `bencode:"complete"`
+ FalureReason string `bencode:"failure reason"`
+ Incomplete int `bencode:"incomplete"`
+ Interval time.Duration `bencode:"interval,seconds"`
+ MinInterval int `bencode:"min interval"`
+ Peers []byte `bencode:"peers"` // can be []byte or []Peer
+ Peers6 []byte `bencode:"peers6"`
+ TrackerId string `bencode:"tracker id"`
+ WarningMessage string `bencode:"warning message"`
}
type Peer struct {
diff --git a/tracker/messages_test.go b/tracker/messages_test.go
index fa47604..5f7d2b3 100644
--- a/tracker/messages_test.go
+++ b/tracker/messages_test.go
@@ -1,6 +1,11 @@
package tracker
-import "testing"
+import (
+ "io/ioutil"
+ "testing"
+
+ "dim13.org/btget/bencode"
+)
var peers = []byte{
111, 221, 44, 148, 32, 222, 195, 154, 163, 111, 42, 147,
@@ -39,3 +44,30 @@ func TestParsePeers(t *testing.T) {
t.Log(v)
}
}
+
+func TestParseResponseCompact(t *testing.T) {
+ body, err := ioutil.ReadFile("../examples/tr_resp.compact")
+ if err != nil {
+ t.Error(err)
+ }
+ var resp Response
+ err = bencode.Unmarshal(body, &resp)
+ if err != nil {
+ t.Error(err)
+ }
+ t.Logf("%+v", resp)
+}
+
+func TestParseResponseVerbose(t *testing.T) {
+ t.Skip()
+ body, err := ioutil.ReadFile("../examples/tr_resp.verbose")
+ if err != nil {
+ t.Error(err)
+ }
+ var resp Response
+ err = bencode.Unmarshal(body, &resp)
+ if err != nil {
+ t.Error(err)
+ }
+ t.Log(resp)
+}