on master help sign in
fmapRouter.
commit96f10add650500e22b12859a913f027996a334d7 authorMatthias Fischmann <mf@zerobuzz.net> dateMon 12 Oct 2015, 17:06 (11 years ago) parent80396c8
1 file changed+8−2
servant-server/src/Servant/Server/Internal/Router.hs+8−2
servant-server/src/Servant/Server/Internal/Router.hs+8−2
@@ -4,7 +4,7 @@ import Data.Map (Map)
44import qualified Data.Map as M
55import Data.Monoid ((<>))
66import Data.Text (Text)
7−import Network.Wai (Request, pathInfo)
7+import Network.Wai (Request, Response, pathInfo)
88import Servant.Server.Internal.PathInfo
99import Servant.Server.Internal.RoutingApplication
1010
@@ -21,6 +21,13 @@ data Router =
2121 | Choice Router Router
2222 -- ^ left-biased choice between two routers
2323
24+fmapRouter :: (RouteResult Response -> RouteResult Response) -> Router -> Router
25+fmapRouter f (LeafRouter a) = LeafRouter $ \req cont -> a req (cont . f)
26+fmapRouter f (StaticRouter m) = StaticRouter (fmapRouter f <$> m)
27+fmapRouter f (DynamicRouter d) = DynamicRouter (fmapRouter f <$> d)
28+fmapRouter f (Choice r1 r2) = Choice (fmapRouter f r1) (fmapRouter f r2)
29+fmapRouter f (WithRequest g) = WithRequest (fmapRouter f . g)
30+
2431-- | Smart constructor for the choice between routers.
2532-- We currently optimize the following cases:
2633--
@@ -69,4 +76,3 @@ runRouter (Choice r1 r2) request respond =
6976 then runRouter r2 request $ \ mResponse2 ->
7077 respond (mResponse1 <> mResponse2)
7178 else respond mResponse1
72−