packages feed

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 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