{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Servant.Client (ServantError)
import System.Environment (lookupEnv)
import qualified Data.Text as T
import Twfy.Client
-- TODO: add applicative opt parsing for urls, api key etc and commands for different API calls
-- TODO: take from command line or env
readApiKey :: IO (Maybe ApiKey)
readApiKey = do
envKey <- lookupEnv "TWFY_API_KEY"
let textKey = fmap T.pack envKey
return textKey
displayResult :: Show a => (Either ServantError a) -> IO ()
displayResult result = do
case result of
Left err -> putStrLn $ "Error: " ++ show err
Right something -> do
print something
run :: ApiKey -> IO ()
run apiKey = do
c <- client apiKey Nothing Nothing
putStrLn $ show c
getConstituencies c >>= displayResult
getConstituency c Nothing (Just "TW8 0QU") >>= displayResult
getMP c Nothing (Just "Manchester, Gorton") Nothing (Just False) >>= displayResult
getMPs c Nothing (Just "Labour") Nothing >>= displayResult
main :: IO ()
main = do
apiKey <- readApiKey
maybe (putStrLn "Can't run without API KEY") run apiKey