aboutsummaryrefslogtreecommitdiff
path: root/meta/torrent.go
blob: 434d50d4ccd72821272fea017b249e5d62cfa7ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package meta

import "time"

type File struct {
	Length int      `bencode:"length"`
	MD5Sum []byte   `bencode:"md5sum,optional"`
	Path   []string `bencode:"path"`
}

type Info struct {
	Length      int    `bencode:"length"`
	MD5Sum      []byte `bencode:"md5sum,optional"`
	Name        string `bencode:"name"`
	PieceLength int    `bencode:"piece length"`
	Pieces      []byte `bencode:"pieces"`
	Files       []File `bencode:"files"`
	Private     bool   `bencode:"private"`
}

type Torrent struct {
	Announce     string     `bencode:"announce"`
	AnnounceList [][]string `bencode:"announce-list,optional"`
	Comment      string     `bencode:"comment,optional"`
	CreatedBy    string     `bencode:"created by,optional"`
	Encoding     string     `bencode:"encoding,optional"`
	CreationDate time.Time  `bencode:"creation date,optional"`
	HTTPSeeds    []string   `bencode:"httpseeds,optional"`
	Info         Info       `bencode:"info"`
	URLList      string     `bencode:"url-list,optional"`
	InfoHash     []byte     `bencode:"-"`
}

type TrackerResponse struct {
	FalureReason   string `bencode:"failure reason"`
	WarningMessage string `bencode:"warning message"`
	Interval       int    `bencode:"interval"`
	MinInterval    int    `bencode:"min interval"`
	TrackerId      string `bencode:"tracker id"`
	Complete       int    `bencode:"complete"`
	Incomplete     int    `bencode:"incomplete"`
	Peers          Peer   `bencode:"peers"`
}

type Peer struct {
	PeerId string `bencode:"peer id"`
	IP     string `bencode:"ip"`
	Port   string `bencode:"ports"`
}

// Peer (compact) []byte