Wheb: The Batteries-Included Haskell WAI Framework

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.



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.


Change logNone available
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.*) [details]
AuthorKyle Hanson
Home pagehttps://github.com/hansonkd/Wheb-Framework
Source repositoryhead: git clone git://github.com/hansonkd/Wheb-Framework.git
UploadedThu Feb 6 20:57:34 UTC 2014 by hansonkd



Maintainers' corner

For package maintainers and hackage trustees