The latest version of Wheb is 0.3.1.0-0.
Wheb
Version 0.0.1.1 revision 0 uploaded by hansonkd.
Package meta
- Synopsis
- The Batteries-Included Haskell WAI Framework
- Description
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
- Author
- Kyle Hanson
- Bug reports
- n/a
- Category
- Web
- Copyright
- n/a
- Homepage
- https://github.com/hansonkd/Wheb-Framework
- Maintainer
- hanooter@gmail.com
- Package URL
- n/a
- Stability
- n/a