packages feed

servant-router 0.8.0 → 0.8.1

raw patch · 4 files changed

+15/−6 lines, 4 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Servant.Router: instance forall k (sublayout :: k) (path :: GHC.Types.Symbol). (Servant.Router.HasRouter sublayout, GHC.TypeLits.KnownSymbol path) => Servant.Router.HasRouter (path Servant.API.Sub.:> sublayout)
- Servant.Router: instance forall k (sublayout :: k) (sym :: GHC.Types.Symbol). (Servant.Router.HasRouter sublayout, GHC.TypeLits.KnownSymbol sym) => Servant.Router.HasRouter (Servant.API.QueryParam.QueryFlag sym Servant.API.Sub.:> sublayout)
- Servant.Router: instance forall k (sublayout :: k) x (sym :: GHC.Types.Symbol). (Servant.Router.HasRouter sublayout, Web.HttpApiData.Internal.FromHttpApiData x) => Servant.Router.HasRouter (Servant.API.Capture.Capture sym x Servant.API.Sub.:> sublayout)
- Servant.Router: instance forall k (sublayout :: k) x (sym :: GHC.Types.Symbol). (Servant.Router.HasRouter sublayout, Web.HttpApiData.Internal.FromHttpApiData x, GHC.TypeLits.KnownSymbol sym) => Servant.Router.HasRouter (Servant.API.QueryParam.QueryParam sym x Servant.API.Sub.:> sublayout)
- Servant.Router: instance forall k (sublayout :: k) x (sym :: GHC.Types.Symbol). (Servant.Router.HasRouter sublayout, Web.HttpApiData.Internal.FromHttpApiData x, GHC.TypeLits.KnownSymbol sym) => Servant.Router.HasRouter (Servant.API.QueryParam.QueryParams sym x Servant.API.Sub.:> sublayout)
+ Servant.Router: instance forall k1 (sublayout :: k1) (path :: GHC.Types.Symbol). (Servant.Router.HasRouter sublayout, GHC.TypeLits.KnownSymbol path) => Servant.Router.HasRouter (path Servant.API.Sub.:> sublayout)
+ Servant.Router: instance forall k1 (sublayout :: k1) (sym :: GHC.Types.Symbol). (Servant.Router.HasRouter sublayout, GHC.TypeLits.KnownSymbol sym) => Servant.Router.HasRouter (Servant.API.QueryParam.QueryFlag sym Servant.API.Sub.:> sublayout)
+ Servant.Router: instance forall k1 (sublayout :: k1) x (sym :: GHC.Types.Symbol). (Servant.Router.HasRouter sublayout, Web.HttpApiData.Internal.FromHttpApiData x) => Servant.Router.HasRouter (Servant.API.Capture.Capture sym x Servant.API.Sub.:> sublayout)
+ Servant.Router: instance forall k1 (sublayout :: k1) x (sym :: GHC.Types.Symbol). (Servant.Router.HasRouter sublayout, Web.HttpApiData.Internal.FromHttpApiData x, GHC.TypeLits.KnownSymbol sym) => Servant.Router.HasRouter (Servant.API.QueryParam.QueryParam sym x Servant.API.Sub.:> sublayout)
+ Servant.Router: instance forall k1 (sublayout :: k1) x (sym :: GHC.Types.Symbol). (Servant.Router.HasRouter sublayout, Web.HttpApiData.Internal.FromHttpApiData x, GHC.TypeLits.KnownSymbol sym) => Servant.Router.HasRouter (Servant.API.QueryParam.QueryParams sym x Servant.API.Sub.:> sublayout)
+ Servant.Router: runRouteLoc :: forall layout m a. (HasRouter layout, MonadError RoutingError m) => Location -> Proxy layout -> RouteT layout m a -> m a

Files

README.md view
@@ -79,7 +79,7 @@  viewsServer :: Server ViewsServer viewsServer = constHandler-	    (Proxy :: Proxy ViewsServer)+	    (Proxy :: Proxy Views) 	    (Proxy :: Proxy Handler) $ 	    docTypeHtml $ do 	      H.head $ return ()
servant-router.cabal view
@@ -1,5 +1,5 @@ name:                servant-router-version:             0.8.0+version:             0.8.1 synopsis:            Servant router for non-server applications. description:         Write Servant APIs to be routed without a server. homepage:            https://github.com/ElvishJerricco/servant-router
src/Servant/Router.hs view
@@ -130,16 +130,23 @@   constHandler _ _ = return   route _ _ _ = RPage +-- | Use a handler to route a 'Location'.+-- Normally 'runRoute' should be used instead, unless you want custom+-- handling of string failing to parse as 'URI'.+runRouteLoc :: forall layout m a. (HasRouter layout, MonadError RoutingError m)+         => Location -> Proxy layout -> RouteT layout m a -> m a+runRouteLoc loc layout page =+  let routing = route layout (Proxy :: Proxy m) (Proxy :: Proxy a) page+  in routeLoc loc routing+ -- | Use a handler to route a location, represented as a 'String'. -- All handlers must, in the end, return @m a@. -- 'routeLoc' will choose a route and return its result. runRoute :: forall layout m a. (HasRouter layout, MonadError RoutingError m)          => String -> Proxy layout -> RouteT layout m a -> m a-runRoute loc' layout page = case uriToLocation <$> parseURI loc' of+runRoute uriString layout page = case uriToLocation <$> parseURIReference uriString of   Nothing -> throwError FailFatal-  Just uri -> let-    routing = route layout (Proxy :: Proxy m) (Proxy :: Proxy a) page-    in routeLoc uri routing+  Just loc -> runRouteLoc loc layout page  -- | Use a computed 'Router' to route a 'Location'. routeLoc :: MonadError RoutingError m => Location -> Router m a -> m a
test/Spec.hs view
@@ -16,8 +16,10 @@ testUris =   [ "https://test.com/root/4?param=hi"   , "https://test.com/other/hi/"+  , "/other/relativeMatch"   , "https://test.com/fail"   , "https://test.com/root/fail"+  , "/root/relativeFail"   ]  main :: IO ()