]> git.rkrishnan.org Git - functorrent.git/blobdiff - src/FuncTorrent/Utils.hs
fix hlint suggestions
[functorrent.git] / src / FuncTorrent / Utils.hs
index ac08927dc348b905d326e58af99fe147b95930aa..b1db8d0defcbf9d6b1c9f46ec520448369b90b19 100644 (file)
@@ -3,16 +3,19 @@ module FuncTorrent.Utils
         writeFileAtOffset,
         readFileAtOffset,
         splitNum,
-        splitN
+        splitN,
+        verifyHash
        )
        where
 
-import Prelude hiding (writeFile)
+import Prelude hiding (writeFile, take)
 
+import qualified Crypto.Hash.SHA1 as SHA1 (hash)
+import Control.Monad (unless)
+import Data.ByteString (ByteString, writeFile, hPut, hGet, take)
+import qualified Data.ByteString.Char8 as BC
 import System.IO (withFile, hSeek, IOMode(..), SeekMode(..))
 import System.Directory (doesFileExist)
-import Data.ByteString (ByteString, writeFile, hPut, hGet)
-import qualified Data.ByteString.Char8 as BC
 
 splitN :: Int -> BC.ByteString -> [BC.ByteString]
 splitN n bs | BC.null bs = []
@@ -26,9 +29,7 @@ splitNum n d | n == 0 = []
 createDummyFile :: FilePath -> Int -> IO ()
 createDummyFile path size = do
   dfe <- doesFileExist path
-  if dfe
-    then return ()
-    else
+  unless dfe $
     writeFile path (BC.replicate size '\0')
 
 -- write into a file at a specific offet
@@ -42,3 +43,7 @@ readFileAtOffset path offset len =
   withFile path ReadWriteMode (\h -> do
                                   hSeek h AbsoluteSeek offset
                                   hGet h (fromInteger len))
+
+verifyHash :: ByteString -> ByteString -> Bool
+verifyHash bs pieceHash =
+  take 20 (SHA1.hash bs) == pieceHash