The Wheb package

[maintain]
Warnings:

Wheb aims at providing a simple simple and straightforward web server.

 import           Web.Wheb
 import           Data.Text.Lazy (pack)

 main :: IO ()
 main = do
  opts <- generateOptions $ addGET (pack ".") rootPat $ (text (pack "Hi!"))
  runWhebServer (opts :: MinOpts)

Wheb makes it easy to share a global context and handle requests statefully

  import           Control.Concurrent.STM
  import           Control.Monad.IO.Class
  import           Data.Monoid
  import           Data.Text.Lazy (Text, pack)
  import           Web.Wheb

  data MyApp = MyApp Text (TVar Int)
  data MyHandlerData = MyHandlerData Int

  instance Default MyHandlerData where
    def = MyHandlerData 0

  counterMw :: MonadIO m => WhebMiddleware MyApp MyHandlerData m
  counterMw = do
    (MyApp _ ctr) <- getApp
    number <- liftIO $ readTVarIO ctr
    liftIO $ atomically $ writeTVar ctr (succ number)
    putReqState (MyHandlerData number)
    return Nothing

  homePage :: WhebHandler MyApp MyHandlerData
  homePage = do
    (MyApp appName _)       <- getApp
    (MyHandlerData num) <- getReqState
    html $ ("<h1>Welcome to" <> appName <>
            "</h1><h2>You are visitor #" <> (pack $ show num) <> "</h2>")

  main :: IO ()
  main = do
    opts <- generateOptions $ do
              startingCounter <- liftIO $ newTVarIO 0
              addWhebMiddleware counterMw
              addGET (pack ".") rootPat $ homePage
              return $ MyApp "AwesomeApp" startingCounter
    runWhebServer opts

Wheb allows you to write robust high concurrency web applications simply and effectively.


Properties

Versions0.0.1.0, 0.0.1.1, 0.0.1.1, 0.1.0.0
Dependenciesbase (==4.6.*), blaze-builder (==0.3.*), bytestring (==0.10.*), case-insensitive (==1.0.*), conduit (==1.0.*), containers (==0.5.*), cookie (==0.4.*), data-default (==0.5.*), http-types (==0.8.*), mtl (==2.1.*), pwstore-fast (==2.4.*), stm (==2.4.*), text (==0.11.*), time (==1.4.*), transformers (==0.3.*), uuid (==1.3.*), wai (==2.0.*), wai-extra (==2.0.*), warp (==2.0.*)
LicenseBSD3
AuthorKyle Hanson
Maintainerhanooter@gmail.com
CategoryWeb
Home pagehttps://github.com/hansonkd/Wheb-Framework
Source repositoryhead: git clone git://github.com/hansonkd/Wheb-Framework.git
Upload dateThu Feb 6 20:57:34 UTC 2014
Uploaded byhansonkd

Modules

Downloads

Maintainers' corner

For package maintainers and hackage trustees