loshadka-0.2: Network/Loshadka/Version.hs
{-# LANGUAGE OverloadedStrings #-}
module Network.Loshadka.Version (readVersion) where
import Network.Loshadka.Jar
import Network.Loshadka.Protocol
import Data.ByteString.Lazy.Char8 (ByteString)
import Crypto.Hash.MD5 (hashlazy)
import Data.Hex
readVersion :: String -> IO Version
readVersion path = do
jar <- readJar path
return $ parse jar
parse :: ByteString -> Version
parse jar =
case lookup (hex $ hashlazy jar) hashes of
Nothing -> snd $ last hashes
Just v -> v
where hashes = [("583B44478C6867677049697FEDEB6831", Version "1.7" 4),
("16BA7DEC941D4CFDE848DEB874E2A6DE", Version "1.7.1" 4),
("C48168F463E935262EA65B702F175153", Version "1.7.2" 4),
("C1D5BE48E90BA0CF296F3D1C5CBF02B8", Version "1.7.3" 4),
("5B379A73717DA01FA232174F8B360F12", Version "1.7.4" 4),
("1B4580BDCA94BC07050EACADFD7E6606", Version "1.7.5" 4),
("7C34FEB800DF7B2AEB5A4D590A064C5A", Version "1.7.6" 5),
("129357C1C8FE45485BD4A4F0138C20FE", Version "1.7.7" 5),
("3F5ED8A73422E8B6E3003A5D2F5F667A", Version "1.7.8" 5),
("94FDD4AB02703B6E105A0C5986B9897C", Version "1.7.9" 5)]