The Wheb package

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.

[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, 0.2.0.0, 0.3.0.0, 0.3.1.0
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]
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
UploadedThu Feb 6 20:57:34 UTC 2014 by hansonkd

Modules

Downloads

Maintainers' corner

For package maintainers and hackage trustees