{-# 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)]