more refactoring: type synonym for info dictionary
authorRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Sat, 21 Feb 2015 03:55:15 +0000 (09:25 +0530)
committerRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Sat, 21 Feb 2015 03:55:15 +0000 (09:25 +0530)
src/Bencode.hs
src/Peer.hs
src/Tracker.hs

index 1fe6aeadd28f945f9064721e2770574ea93817b8..717170ede68b353f1c1aa0dcb012bf4853b46fb0 100644 (file)
@@ -12,9 +12,11 @@ data BVal =
     Bint Integer
   | Bstr BC.ByteString
   | Blist [BVal]
-  | Bdict (M.Map BVal BVal)
+  | Bdict InfoDict
   deriving (Ord, Eq)
 
+type InfoDict = M.Map BVal BVal
+
 instance Show BVal where
   show (Bint i) = show i
   show (Bstr s) = "\"" ++ BC.unpack s ++ "\""
index 0f33961a63709656ea442f5afba875ed31fb6b7a..f647c61c94c37e71a384735bdab27425e9de8105 100644 (file)
@@ -53,7 +53,7 @@ getPeerResponse body = case Benc.decode body of
                                           }
 
 
-handShakeMsg :: M.Map Benc.BVal Benc.BVal -> String -> BC.ByteString
+handShakeMsg :: Benc.InfoDict -> String -> BC.ByteString
 handShakeMsg m peer_id = let pstrlen = BC.concat $ BL.toChunks $ Bin.encode (19 :: DI.Int8)
                              pstr = BC.pack "BitTorrent protocol"
                              reserved = BC.replicate 8 '\0'
index 5afc26f3b3729c50dbd47e3ce4cd8cd0116fc273..dad05e6a8c44f74bceab9f7727da5fd7eb8ccd5f 100644 (file)
@@ -12,7 +12,6 @@ import qualified Utils as U
 import Data.Char
 
 type Url = String
-type InfoDict = M.Map Benc.BVal Benc.BVal
 
 -- | urlEncodeHash
 --
@@ -35,7 +34,7 @@ infoHash :: M.Map Benc.BVal Benc.BVal -> BC.ByteString
 infoHash m = let info = m M.! Benc.Bstr (BC.pack "info")
              in (SHA1.hash . BC.pack . Benc.encode) info
 
-prepareRequest :: InfoDict -> String -> Integer -> String
+prepareRequest :: Benc.InfoDict -> String -> Integer -> String
 prepareRequest d peer_id len =
   let p = [("info_hash", urlEncodeHash ((B16.encode . infoHash) d)),
            ("peer_id", HB.urlEncode peer_id),