22 lines
660 B
Haskell
22 lines
660 B
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
import Yesod.Core
|
|
import Data.Aeson
|
|
import Data.Monoid ((<>))
|
|
import Data.Text (Text, pack)
|
|
|
|
people :: [(Text, Int)]
|
|
people = [("Alice", 25), ("Bob", 43), ("Charlie", 37)]
|
|
|
|
main = warp 3000 $ liteApp $ do
|
|
onStatic "people" $ dispatchTo getPeople
|
|
onStatic "person" $ withDynamic $ dispatchTo . getPerson
|
|
|
|
getPeople = return $ toJSON $ map fst people
|
|
|
|
getPerson name =
|
|
case lookup name people of
|
|
Nothing -> notFound
|
|
Just age -> selectRep $ do
|
|
provideRep $ return $ object ["name" .= name, "age" .= age]
|
|
provideRep $ return $ name <> " is " <> pack (show age) <> " years old"
|