]> git.rkrishnan.org Git - functorrent.git/commitdiff
WIP: mkMetaInfo
authorRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Wed, 4 Feb 2015 16:23:26 +0000 (21:53 +0530)
committerRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Wed, 4 Feb 2015 16:23:26 +0000 (21:53 +0530)
src/Metainfo.hs

index 58a2369b14d1bc674cc77ed49932453d1a66befe..c60912352a7cdd70ac4459c462632cdc9e77d7d3 100644 (file)
@@ -2,6 +2,7 @@ module Metainfo where
 
 import qualified Bencode as Benc
 import qualified Data.ByteString.Char8 as BC
+import qualified Data.Map as M
 import Data.Time.Clock
 
 -- only single file mode supported for the time being.
@@ -22,4 +23,19 @@ data Metainfo = MetaInfo { info :: Info
                          , encoding :: Maybe String }
               deriving (Eq)
 
-mkMetaInfo :: Benv.BVal -> MetaInfo
+mkMetaInfo :: Benv.BVal -> Maybe MetaInfo
+mkMetaInfo (Bdict m) = let info = mkInfo (m ! (Bstr (BC.pack "info")))
+                           announce = m M.! (Bstr (BC.pack "announce"))
+                           announceList = M.lookup (Bstr (BC.pack "announce list")) m
+                           creationDate = M.lookup (Bstr (BC.pack "creation date")) m
+                           comment = M.lookup (Bstr (BC.pack "comment")) m
+                           createdBy = M.lookup (Bstr (BC.pack "created by")) m
+                           encoding = M.lookup (Bstr (BC.pack "encoding")) m
+                       in Just MetaInfo { info = info
+                                        , announce = announce
+                                        , announceList = announceList
+                                        , creationDate = creationDate
+                                        , comment = comment
+                                        , createdBy = createdBy
+                                        , encoding = encoding }
+mkMetaInfo _ = Nothing