packages feed

scotty-rest-0.2.0.0: examples/MutableState.hs

{-# LANGUAGE OverloadedStrings #-}

module Main where

import Control.Monad.IO.Class (liftIO)
import Data.IORef
import Data.Text.Lazy (pack)
import Web.Scotty.Trans (scottyT, html)
import Web.Scotty.Rest

main :: IO ()
main = do
  ref <- newIORef (0 :: Int)
  scottyT 3000 id $ do
    rest "/" defaultConfig {
      contentTypesProvided = return [
        ("text/html", do liftIO (modifyIORef ref (+1))
                         count <- liftIO (readIORef ref)
                         let text = pack ("You are visitor number " ++ show count)
                         html text
        )
      ]
    }