apis-0.0.0: src/TH/API.hs
module TH.API (generateAPIs) where
import Prelude
import Control.Monad (mzero, join, forM)
import Control.Applicative ((<$>))
import Language.Haskell.TH.Syntax (Q, qRunIO)
import System.FilePath (takeBaseName)
import Helper.File
import Data.TH.API
import TH.API.Input
import TH.API.Output
generateAPIs :: FilePath -> Q [API]
generateAPIs folder = do
files <- qRunIO $ findAPIs folder
join <$> (forM (take 1000 files) $ \file@(xml, json) -> do
let fname = takeBaseName xml
mAPI <- qRunIO $ loadAPI file
case mAPI of
Just (opentable, schema) -> do
input <- generateInput xml opentable
output <- generateOutput json schema
let api = API fname input output
return [api]
_ -> do
qRunIO . print $ "Can't load " ++ fname
return mzero)