1 {-# LANGUAGE OverloadedStrings #-}
2 module FuncTorrent.Peer
7 import Prelude hiding (lookup, concat, replicate, splitAt)
9 import Data.ByteString.Char8 (ByteString, pack, concat, replicate)
10 import Data.ByteString.Lazy (toChunks)
11 import Data.Int (Int8)
12 import qualified Data.Binary as Bin (encode)
14 import FuncTorrent.Metainfo (Metainfo(..))
16 -- | Peer is a IP address, port tuple
17 data Peer = Peer String Integer
20 handShakeMsg :: Metainfo -> String -> ByteString
21 handShakeMsg m peer_id = concat [pstrlen, pstr, reserved, infoH, peerID]
22 where pstrlen = concat $ toChunks $ Bin.encode (19 :: Int8)
23 pstr = pack "BitTorrent protocol"
24 reserved = replicate 8 '\0'