bird 0.0.7 → 0.0.8
raw patch · 3 files changed
+16/−6 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Bird.BirdRouter: param :: (MonadReader Request m) => String -> m (Maybe String)
- Bird.BirdRouter: type BirdRouter = StateT Reply IO
+ Bird.BirdRouter: type BirdRouter = StateT Reply (ReaderT Request IO)
Files
- bin/bird.hs +8/−3
- bird.cabal +1/−1
- src/Bird/BirdRouter.hs +7/−2
bin/bird.hs view
@@ -20,9 +20,13 @@ routeFile a = "module " ++ a ++ " where\n" +++ "import Data.Maybe\n" ++ "import Bird\n\n" ++ "get, post, put, delete :: Path -> BirdRouter ()\n" ++- "get [] = body \"Hello, Bird!\"\n" +++ "get [] = do\n" +++ " name <- param $ \"name\"\n" +++ " body $ \"Hello, \" ++ (maybe \"Bird!\" id name)\n\n" +++ "get _ = status 404\n" ++ "post _ = status 404\n" ++ "put _ = status 404\n" ++@@ -33,6 +37,7 @@ "import Hack.Handler.Happstack\n" ++ "import Bird\n" ++ "import qualified Control.Monad.State as S\n" +++ "import qualified Control.Monad.Reader as R\n" ++ "import " ++ a ++ "\n" ++ "\n" ++ "app :: Application\n" ++@@ -41,9 +46,9 @@ "route :: Env -> IO Response\n" ++ "route e = response\n" ++ " where \n" ++- " r = envToRequest e\n" +++ " req = envToRequest e\n" ++ " response = do \n" ++- " reply <- S.execStateT (matchRequest r) def\n" +++ " reply <- R.runReaderT (S.execStateT (matchRequest req) def) req\n" ++ " return $ replyToResponse reply\n" ++ "\n" ++ "matchRequest r = \n" ++
bird.cabal view
@@ -1,5 +1,5 @@ Name: bird-Version: 0.0.7+Version: 0.0.8 Build-type: Simple Synopsis: A simple, sinatra-inspired web framework. Description: Bird is a hack-compatible framework for simple websites.
src/Bird/BirdRouter.hs view
@@ -2,13 +2,16 @@ BirdRouter , body , status+, param ) where import Control.Monad.State+import Control.Monad.Reader+import Data.Maybe import Bird.Reply import Bird.Request -type BirdRouter = StateT Reply IO+type BirdRouter = StateT Reply (ReaderT Request IO) body b = do reply <- get@@ -18,4 +21,6 @@ reply <- get put $ reply { replyStatus = code } ---param paramName request = lookup paramName $ params request+param paramName = do+ request <- ask+ return $ maybe Nothing id (lookup paramName $ params request)