packages feed

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