Spock 0.6.2.0 → 0.6.2.1
raw patch · 3 files changed
+14/−11 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- Spock.cabal +1/−1
- src/Web/Spock.hs +2/−2
- src/Web/Spock/Wire.hs +11/−8
Spock.cabal view
@@ -1,5 +1,5 @@ name: Spock-version: 0.6.2.0+version: 0.6.2.1 synopsis: Another Haskell web framework for rapid development description: This toolbox provides everything you need to get a quick start into web hacking with haskell: routing, middleware, json, blaze, sessions, cookies, database helper, csrf-protection, global state Homepage: https://github.com/agrafix/Spock
src/Web/Spock.hs view
@@ -76,9 +76,9 @@ runM m = runResourceT $ runReaderT (runWebStateM m) internalState spockT port runM $- do middleware (sm_middleware sessionMgr)- hookSafeActions+ do hookSafeActions defs+ middleware (sm_middleware sessionMgr) -- | Write to the current session. Note that all data is stored on the server. -- The user only reciedes a sessionId to be identified.
src/Web/Spock/Wire.hs view
@@ -44,7 +44,7 @@ data SpockState m = SpockState { ss_treeMap :: !(SpockRouteMap m)- , ss_middleware :: Wai.Middleware+ , ss_middleware :: [Wai.Middleware] , ss_spockLift :: forall a. m a -> IO a } @@ -67,13 +67,14 @@ = ResponseFile FilePath | ResponseLBS BSL.ByteString | ResponseRedirect T.Text+ deriving (Show, Eq) data ResponseState = ResponseState { rs_responseHeaders :: [(T.Text, T.Text)] , rs_status :: Status , rs_responseBody :: ResponseBody- }+ } deriving (Show, Eq) type BaseRoute = T.Text @@ -135,7 +136,7 @@ do let initState = SpockState { ss_treeMap = HM.empty- , ss_middleware = id+ , ss_middleware = [] , ss_spockLift = spockLift } (spockState, ()) <- spockLift $ execRWST (runSpockT spockActions) "/" initState@@ -170,7 +171,7 @@ (respState, _) <- liftIO $ (spockLift $ execRWST (runActionT action) env resp) `catch` \(e :: SomeException) ->- do putStrLn $ "Spock Error: " ++ show e+ do putStrLn $ "Spock Error while handeling " ++ show (Wai.pathInfo req) ++ ": " ++ show e return (serverError, ()) forM_ (HM.elems uploadedFiles) $ \uploadedFile -> do stillThere <- doesFileExist (uf_tempLocation uploadedFile)@@ -180,12 +181,12 @@ respond notFound Nothing -> respond notFound- return $ ss_middleware spockState $ app+ return $ foldl (.) id (ss_middleware spockState) $ app -- | Hook up a 'Wai.Middleware' middleware :: MonadIO m => Wai.Middleware -> SpockT m () middleware mw =- modify $ \st -> st { ss_middleware = mw . (ss_middleware st) }+ modify $ \st -> st { ss_middleware = (ss_middleware st ++ [mw]) } -- | Define a route matching a provided 'StdMethod' and route defRoute :: (MonadIO m) => StdMethod -> T.Text -> ActionT m () -> SpockT m ()@@ -228,14 +229,16 @@ parentRoute <- ask let initState = parentState- { ss_treeMap = HM.empty }+ { ss_treeMap = HM.empty+ , ss_middleware = []+ } (a, finalState, ()) <- liftIO $ (ss_spockLift parentState) $ runRWST (runSpockT defs) (parentRoute `combineRoute` baseRoute) initState modify $ \st -> st { ss_treeMap = HM.unionWith HM.union (ss_treeMap st) (ss_treeMap finalState)- , ss_middleware = (ss_middleware finalState) . (ss_middleware st)+ , ss_middleware = (ss_middleware st) ++ (ss_middleware finalState) } return a