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 +22/−14
- network-wai-router.cabal +3/−3
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