packages feed

servant-ede-0.4: example/example.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE OverloadedStrings #-}
import Control.Monad
import Data.Monoid
import GHC.Generics
import Network.Wai.Handler.Warp
import Servant
import Servant.HTML.EDE
import Text.EDE

data User = User { name :: String, age :: Int }
  deriving (Eq, Show, Generic)

instance ToObject User where

type API = "index" :> Tpl "index.tpl"
      :<|> "foo"   :> Tpl "foo.tpl"
      :<|> "user"  :> Get '[HTML "user.tpl"] User

api :: Proxy API
api = Proxy

server :: Server API
server = rawTemplate :<|> rawTemplate :<|> return (User "lambdabot" 35)

  where rawTemplate = return mempty

main :: IO ()
main = do
  loadTemplates api "example"
  run 8082 (serve api server)