{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE OverloadedStrings #-}
module Main (main) where
import Data.Maybe (fromMaybe)
import Network.Wai (Application)
import Servant
import Servant.HTML.Blaze
import System.Environment (getArgs, lookupEnv)
import Text.Read (readMaybe)
import qualified Text.Blaze.Html5 as H
import qualified Network.Wai.Handler.Warp as Warp
type API = "string" :> Get '[HTML] String
:<|> "html" :> Get '[HTML] H.Html
api :: Proxy API
api = Proxy
server :: Server API
server = return "example" :<|> return html where
html :: H.Html
html = do
H.b "bar"
H.i "iik"
app :: Application
app = serve api server
main :: IO ()
main = do
args <- getArgs
case args of
("run":_) -> do
port <- fmap (fromMaybe 8000 . (>>= readMaybe)) (lookupEnv "PORT")
putStrLn $ "http://localhost:" ++ show port ++ "/"
Warp.run port app
_ -> do
putStrLn "Example application, used as a compilation check"
putStrLn "To run, pass run argument: --test-arguments run"