aboutsummaryrefslogtreecommitdiff
path: root/tracker
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-06-16 00:17:50 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-06-16 00:17:50 +0200
commit57232f3554fd4a0639cf2e8b23cfd37aa2fc21eb (patch)
tree354829ec72edf3d3ff91c205c0bb7c6d052e72ae /tracker
parent662556e27a4d7a53013bae7c4d2a65fc541d6fa2 (diff)
Add request query struct
Diffstat (limited to 'tracker')
-rw-r--r--tracker/query.go20
1 files changed, 14 insertions, 6 deletions
diff --git a/tracker/query.go b/tracker/query.go
index bb741dd..8e9a9bf 100644
--- a/tracker/query.go
+++ b/tracker/query.go
@@ -2,12 +2,24 @@ package tracker
import (
"errors"
+ "net"
"net/url"
"reflect"
"strconv"
"strings"
)
+type Request struct {
+ InfoHash []byte `query:"info_hash"`
+ PeerID []byte `query:"peer_id"`
+ Port int `query:"port"`
+ Uploaded int `query:"uploaded"`
+ Downloaded int `query:"downloaded"`
+ Left int `query:"left"`
+ IP net.IPAddr `query:"ip,optional"`
+ NumWant int `query:"numwant,optional"`
+}
+
func MarshalQuery(v interface{}) (string, error) {
val := reflect.ValueOf(v)
return marshalQuery(val)
@@ -24,13 +36,9 @@ func marshalQuery(v reflect.Value) (string, error) {
f := v.Field(i)
switch f.Kind() {
case reflect.Int:
- if x := int(f.Int()); x != 0 {
- q.Add(name, strconv.Itoa(int(f.Int())))
- }
+ q.Add(name, strconv.Itoa(int(f.Int())))
case reflect.String:
- if s := f.String(); s != "" {
- q.Add(name, f.String())
- }
+ q.Add(name, f.String())
}
}
return "?" + q.Encode(), nil