Wheb: The Batteries-Included Haskell WAI Framework
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.
The core datatype will allow you to build anything from a read-only server to a fully interactive web application with hundreds of routes without needing to define MonadTransformers.
Minimal boilerplate to start your application.
Plugin system
Modules
[Index]
Downloads
- Wheb-0.0.1.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
Versions [RSS] | 0.0.1.0, 0.0.1.1, 0.1.0.0, 0.2.0.0, 0.3.0.0, 0.3.1.0 |
---|---|
Dependencies | base (>=4.6 && <4.7), blaze-builder (>=0.3 && <0.4), bytestring (>=0.10 && <0.11), case-insensitive (>=1.0 && <1.1), conduit (>=1.0 && <1.1), containers (>=0.5 && <0.6), cookie (>=0.4 && <0.5), data-default (>=0.5 && <0.6), http-types (>=0.8 && <0.9), mtl (>=2.1 && <2.2), pwstore-fast (>=2.4 && <2.5), stm (>=2.4 && <2.5), text (>=0.11 && <0.12), time (>=1.4 && <1.5), transformers (>=0.3 && <0.4), uuid (>=1.3 && <1.4), wai (>=2.0 && <2.1), wai-extra (>=2.0 && <2.1), warp (>=2.0 && <2.1) [details] |
License | BSD-3-Clause |
Author | Kyle Hanson |
Maintainer | hanooter@gmail.com |
Category | Web |
Home page | https://github.com/hansonkd/Wheb-Framework |
Source repo | head: git clone git://github.com/hansonkd/Wheb-Framework.git |
Uploaded | by hansonkd at 2014-02-06T20:58:40Z |
Distributions | |
Reverse Dependencies | 4 direct, 0 indirect [details] |
Downloads | 5025 total (11 in the last 30 days) |
Rating | (no votes yet) [estimated by Bayesian average] |
Your Rating | |
Status | Docs available [build log] Successful builds reported [all 2 reports] |