X-Git-Url: https://git.rkrishnan.org/?a=blobdiff_plain;f=src%2FFuncTorrent%2FMetainfo.hs;h=4eece7d5248a0ff257c1f9e02dd9d2e31b924a9e;hb=e047e30d9d83a4f44ad56f0a70c953350a3cb55a;hp=a3313d18cbb5c6338de4a38466719af25ad47258;hpb=f1da48408a5e8be087c11474647aed2135cf635a;p=functorrent.git diff --git a/src/FuncTorrent/Metainfo.hs b/src/FuncTorrent/Metainfo.hs index a3313d1..4eece7d 100644 --- a/src/FuncTorrent/Metainfo.hs +++ b/src/FuncTorrent/Metainfo.hs @@ -46,7 +46,7 @@ mkInfo (Bdict m) = let (Bint pieceLength') = m ! "piece length" , md5sum = md5sum'} mkInfo _ = Nothing -mkMetaInfo :: BVal -> Maybe Metainfo +mkMetaInfo :: BVal -> Either String Metainfo mkMetaInfo (Bdict m) = let (Just info') = mkInfo $ m ! "info" announce' = lookup "announce" m @@ -55,18 +55,18 @@ mkMetaInfo (Bdict m) = comment' = lookup "comment" m createdBy' = lookup "created by" m encoding' = lookup "encoding" m - in Just Metainfo { - info = info' - , announceList = maybeToList (announce' >>= bstrToString) - ++ getAnnounceList announceList' - , creationDate = bValToInteger =<< creationDate' - , comment = bstrToString =<< comment' - , createdBy = bstrToString =<< createdBy' - , encoding = bstrToString =<< encoding' - , infoHash = hash . encode $ (m ! "info") - } + in Right Metainfo { + info = info' + , announceList = maybeToList (announce' >>= bstrToString) + ++ getAnnounceList announceList' + , creationDate = bValToInteger =<< creationDate' + , comment = bstrToString =<< comment' + , createdBy = bstrToString =<< createdBy' + , encoding = bstrToString =<< encoding' + , infoHash = hash . encode $ (m ! "info") + } -mkMetaInfo _ = Nothing +mkMetaInfo _ = Left "mkMetaInfo: expect an input dict" getAnnounceList :: Maybe BVal -> [String] getAnnounceList Nothing = []