diff options
Diffstat (limited to 'src/Network/Torrent/Tracker.hs')
-rw-r--r-- | src/Network/Torrent/Tracker.hs | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/Network/Torrent/Tracker.hs b/src/Network/Torrent/Tracker.hs index 72fbcb44..796db66a 100644 --- a/src/Network/Torrent/Tracker.hs +++ b/src/Network/Torrent/Tracker.hs | |||
@@ -22,6 +22,7 @@ import Data.ByteString.Char8 as BC | |||
22 | import Data.Text as T | 22 | import Data.Text as T |
23 | import Data.Serialize.Get hiding (Result) | 23 | import Data.Serialize.Get hiding (Result) |
24 | import Data.URLEncoded as URL | 24 | import Data.URLEncoded as URL |
25 | import Data.Torrent | ||
25 | 26 | ||
26 | import Network | 27 | import Network |
27 | import Network.Socket | 28 | import Network.Socket |
@@ -31,8 +32,6 @@ import Network.Torrent.PeerID | |||
31 | 32 | ||
32 | import Numeric | 33 | import Numeric |
33 | 34 | ||
34 | type Hash = ByteString | ||
35 | |||
36 | data Peer = Peer { | 35 | data Peer = Peer { |
37 | peerID :: Maybe PeerID | 36 | peerID :: Maybe PeerID |
38 | , peerIP :: HostAddress | 37 | , peerIP :: HostAddress |
@@ -46,7 +45,7 @@ data Event = Started -- ^ For first request. | |||
46 | 45 | ||
47 | data TRequest = TRequest { -- TODO peer here -- TODO detach announce | 46 | data TRequest = TRequest { -- TODO peer here -- TODO detach announce |
48 | reqAnnounce :: URI -- ^ Announce url of the torrent. | 47 | reqAnnounce :: URI -- ^ Announce url of the torrent. |
49 | , reqInfoHash :: Hash -- ^ Hash of info part of the torrent. | 48 | , reqInfoHash :: InfoHash -- ^ Hash of info part of the torrent. |
50 | , reqPeerID :: PeerID -- ^ Id of the peer doing request. () | 49 | , reqPeerID :: PeerID -- ^ Id of the peer doing request. () |
51 | , reqPort :: PortNumber -- ^ Port to listen to for connection from other peers. | 50 | , reqPort :: PortNumber -- ^ Port to listen to for connection from other peers. |
52 | , reqUploaded :: Int -- ^ # of bytes that the peer has uploaded in the swarm. | 51 | , reqUploaded :: Int -- ^ # of bytes that the peer has uploaded in the swarm. |
@@ -155,7 +154,7 @@ instance URLEncode TRequest where | |||
155 | 154 | ||
156 | encodeRequest :: TRequest -> URI | 155 | encodeRequest :: TRequest -> URI |
157 | encodeRequest req = URL.urlEncode req `addToURI` reqAnnounce req | 156 | encodeRequest req = URL.urlEncode req `addToURI` reqAnnounce req |
158 | `addHash` BC.unpack (reqInfoHash req) | 157 | `addHash` BC.unpack (getInfoHash (reqInfoHash req)) |
159 | where | 158 | where |
160 | addHash :: URI -> String -> URI | 159 | addHash :: URI -> String -> URI |
161 | addHash uri s = uri { uriQuery = uriQuery uri ++ "&info_hash=" ++ rfc1738Encode s } | 160 | addHash uri s = uri { uriQuery = uriQuery uri ++ "&info_hash=" ++ rfc1738Encode s } |
@@ -176,7 +175,7 @@ encodeRequest req = URL.urlEncode req `addToURI` reqAnnounce req | |||
176 | defaultPorts :: [PortNumber] | 175 | defaultPorts :: [PortNumber] |
177 | defaultPorts = [6881..6889] | 176 | defaultPorts = [6881..6889] |
178 | 177 | ||
179 | defaultRequest :: URI -> Hash -> PeerID -> TRequest | 178 | defaultRequest :: URI -> InfoHash -> PeerID -> TRequest |
180 | defaultRequest announce hash pid = | 179 | defaultRequest announce hash pid = |
181 | TRequest { | 180 | TRequest { |
182 | reqAnnounce = announce | 181 | reqAnnounce = announce |