packages feed

network-wai-router 0.1.2.0 → 0.3.0.1

raw patch · 2 files changed

+25/−17 lines, 2 filesdep ~waiPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: wai

API changes (from Hackage documentation)

- Network.Wai.Router: pass :: IO (Maybe Response)
- Network.Wai.Router: respond :: Response -> IO (Maybe Response)
+ Network.Wai.Router: type AppResponder = Response -> IO ResponseReceived
+ Network.Wai.Router: type RouteResponder = (Maybe Response) -> IO ResponseReceived
- Network.Wai.Router: route :: [Router] -> Router
+ Network.Wai.Router: route :: Router -> [Router] -> Router
- Network.Wai.Router: runRouter :: Application -> Router -> Application
+ Network.Wai.Router: runRouter :: Router -> Application
- Network.Wai.Router: type Router = Request -> IO (Maybe Response)
+ Network.Wai.Router: type Router = Request -> RouteResponder -> IO ResponseReceived

Files

Network/Wai/Router.hs view
@@ -2,22 +2,30 @@ import Control.Monad import Network.Wai import Control.Applicative+import Data.List -type Router = Request -> IO (Maybe Response)+type RouteResponder = ((Maybe Response) -> IO ResponseReceived)+type AppResponder = (Response -> IO ResponseReceived)+type Router = Request -> RouteResponder -> IO ResponseReceived -runRouter :: Application -> Router -> Application-runRouter d r req = do-    maybe <$> (d req) <*> pure id <*> r req+runRouter :: Router -> Application+runRouter r req res = do+    r req myRes+  where+    myRes (Just resp) = res resp  fromApplication :: Application -> Router-fromApplication app req = return <$> app req--route :: [Router] -> Router-route rs req = do-    msum <$> mapM ($req) rs--respond :: Response -> IO (Maybe Response)-respond = return . return+fromApplication app req res = app req (res . pure) -pass :: IO (Maybe Response)-pass = return Nothing+route :: Router -> [Router] -> Router+route d rs req res = do+    r req $ cont d req $ res+  where+    r = foldl' build d rs+    build :: Router -> Router -> Router+    build r b req' res' = b req' (cont r req' res')+    cont :: Router -> Request -> RouteResponder -> RouteResponder+    cont b req resp response@(Just _) =+      resp response+    cont b req resp (Nothing) =+      b req resp
network-wai-router.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                network-wai-router-version:             0.1.2.0+version:             0.3.0.1 synopsis:            A routing library for wai -- description:          license:             MIT@@ -18,8 +18,8 @@ library   exposed-modules:     Network.Wai.Router   -- other-modules:       -  -- other-extensions:    -  build-depends:       base >=4 && <5, wai >=2.1 && <2.2+  other-extensions:    BangPatterns+  build-depends:       base >=4 && <5, wai >=3.0 && <3.1   -- hs-source-dirs:         default-language:    Haskell2010   ghc-options:         -Wall -O2