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.
Warnings:
- Exposed modules use unallocated top-level names: Web
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
Properties
Versions | 0.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 log | None available |
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:57:34Z |
Modules
- Web
- Web.Wheb
- Web.Wheb.Cookie
- Web.Wheb.InitM
- Web.Wheb.Internal
- Plugins
- Web.Wheb.Plugins.Auth
- Debug
- Web.Wheb.Plugins.Debug.MemoryBackend
- Web.Wheb.Plugins.Session
- Web.Wheb.Routes
- Web.Wheb.Types
- Web.Wheb.Utils
- Web.Wheb.WhebT
- Web.Wheb
Downloads
- Wheb-0.0.1.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees