module Common
(
defaultCredsFile
,parseCredsFile
)where
import System.IO.Unsafe (unsafePerformIO)
import System.Environment (getEnv)
import Text.Printf (printf)
import qualified Network.Asus.WL500gP as W
import Data.Char (toLower)
import Control.Monad (liftM)
homeDirectory = unsafePerformIO $ getEnv "HOME"
defaultCredsFile = printf "%s/.wl500gp" homeDirectory :: String
parseCredsFile :: String -> IO (Maybe W.Connection)
parseCredsFile fname =
let toPair (a:b:[]) = (map toLower a, b)
toPair _ = ("", "")
parse = filter (/= ("", "")) . map (toPair . words) . lines
in do
contentsMap <- liftM parse $ readFile fname
return $ do (host:passwd:user:[]) <-
mapM (`lookup` contentsMap) ["host:"
,"password:"
,"user:"]
return $ W.Connection {W.user = user
,W.password = passwd
,W.hostname = host}