aboutsummaryrefslogtreecommitdiff
path: root/tracker
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-07-15 03:08:20 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-07-15 03:08:20 +0200
commit0737e10bc849f5bc0c9bfcaad3c49e32c638cfa2 (patch)
treeab310cf92dd03395825dddc05d202d30484efd89 /tracker
parent7727cf2f9d64027e05cbd25466a0af6e25f628e0 (diff)
wip tracker
Diffstat (limited to 'tracker')
-rw-r--r--tracker/messages.go39
1 files changed, 38 insertions, 1 deletions
diff --git a/tracker/messages.go b/tracker/messages.go
index 8062eaf..70719dc 100644
--- a/tracker/messages.go
+++ b/tracker/messages.go
@@ -1,6 +1,14 @@
package tracker
-import "net"
+import (
+ "io/ioutil"
+ "log"
+ "net"
+ "net/http"
+
+ "dim13.org/btget/bencode"
+ "dim13.org/btget/query"
+)
type Event string
@@ -39,3 +47,32 @@ type Response struct {
TrackerId string `bencode:"tracker id"`
WarningMessage string `bencode:"warning message"`
}
+
+func (r Request) Get(announce string) (Response, error) {
+ fail := func(err error) (Response, error) {
+ return Response{}, err
+ }
+ q, err := query.Marshal(r)
+ if err != nil {
+ return fail(err)
+ }
+ log.Println(announce + q)
+ resp, err := http.Get(announce + q)
+ if err != nil {
+ return fail(err)
+ }
+ defer resp.Body.Close()
+
+ body, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ return fail(err)
+ }
+ log.Println(string(body))
+
+ var res Response
+ err = bencode.Unmarshal(body, &res)
+ if err != nil {
+ return fail(err)
+ }
+ return res, nil
+}