]> git.rkrishnan.org Git - functorrent.git/blobdiff - src/FuncTorrent/Metainfo.hs
remove redundant import
[functorrent.git] / src / FuncTorrent / Metainfo.hs
index 4eece7d5248a0ff257c1f9e02dd9d2e31b924a9e..898cc54a037b7e009a60a172b9fdf31fc814b98b 100644 (file)
@@ -1,8 +1,26 @@
+{-
+ - Copyright (C) 2015-2016 Ramakrishnan Muthukrishnan <ram@rkrishnan.org>
+ -
+ - This file is part of FuncTorrent.
+ -
+ - FuncTorrent is free software; you can redistribute it and/or modify
+ - it under the terms of the GNU General Public License as published by
+ - the Free Software Foundation; either version 3 of the License, or
+ - (at your option) any later version.
+ -
+ - FuncTorrent is distributed in the hope that it will be useful,
+ - but WITHOUT ANY WARRANTY; without even the implied warranty of
+ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ - GNU General Public License for more details.
+ -
+ - You should have received a copy of the GNU General Public License
+ - along with FuncTorrent; if not,  see <http://www.gnu.org/licenses/>
+ -}
+
 module FuncTorrent.Metainfo
     (Info(..),
      Metainfo(..),
-     mkInfo,
-     mkMetaInfo
+     torrentToMetainfo
     ) where
 
 import Prelude hiding (lookup)
@@ -11,7 +29,7 @@ import Data.Map as M ((!), lookup)
 import Crypto.Hash.SHA1 (hash)
 import Data.Maybe (maybeToList)
 
-import FuncTorrent.Bencode (BVal(..), encode, bstrToString, bValToInteger)
+import FuncTorrent.Bencode (BVal(..), encode, decode, bstrToString, bValToInteger)
 
 -- only single file mode supported for the time being.
 data Info = Info { pieceLength :: !Integer
@@ -65,7 +83,6 @@ mkMetaInfo (Bdict m)  =
              , encoding     = bstrToString  =<< encoding'
              , infoHash     = hash . encode $ (m ! "info")
              }
-
 mkMetaInfo _ = Left "mkMetaInfo: expect an input dict"
 
 getAnnounceList :: Maybe BVal -> [String]
@@ -78,5 +95,10 @@ getAnnounceList (Just (Blist l)) = map (\s -> case s of
                                                               [Bstr s''] -> unpack s''
                                                               _ -> ""
                                                _ -> "") l
-
 getAnnounceList (Just (Bdict _)) = []
+
+torrentToMetainfo :: ByteString -> Either String Metainfo
+torrentToMetainfo s =
+  case decode s of
+   Right d -> mkMetaInfo d
+   Left e -> Left $ show e