{-# LANGUAGE DataKinds #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeOperators #-} module Main where import Data.Proxy ( Proxy(..) ) import Data.Text ( Text ) import qualified Data.Text as T import Network.Wai.Handler.Warp ( run ) import Servant ( (:>) , Application , CaptureAll , Get , Handler , JSON , Server , serve ) import System.Process ( readProcess ) type API = GetPageCompliance type GetPageCompliance = CaptureAll "url" Text :> Get '[JSON] Text server :: Server API server = getPageCompliance getPageCompliance :: [Text] -> Handler Text getPageCompliance urlPieces = return $ "You have requested librejs-compliance info for " <> T.intercalate "/" urlPieces runCompliance :: Text -> IO Text runCompliance url = T.pack <$> readProcess "bin/node" ["~/source/librejserver/librejs/utilities/compliance.js", T.unpack url] "" app :: Application app = serve api server api :: Proxy API api = Proxy main :: IO () main = run 5678 app