packages feed

web-inv-route 0.1 → 0.1.1

raw patch · 4 files changed

+23/−8 lines, 4 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Web.Route.Invertible.Internal: PlaceholderFixed :: !s -> Placeholder s ()
- Web.Route.Invertible.Internal: PlaceholderParameter :: Placeholder s a
- Web.Route.Invertible.Internal: PlaceholderValueFixed :: !s -> PlaceholderValue s
- Web.Route.Invertible.Internal: PlaceholderValueParameter :: a -> PlaceholderValue s
- Web.Route.Invertible.Internal: RouteAccept :: !ContentType -> RoutePredicate ()
- Web.Route.Invertible.Internal: RouteCustom :: (Request -> Maybe a) -> (a -> Request -> Request) -> RoutePredicate a
- Web.Route.Invertible.Internal: RouteHost :: !(Host h) -> RoutePredicate h
- Web.Route.Invertible.Internal: RouteMethod :: !Method -> RoutePredicate ()
- Web.Route.Invertible.Internal: RoutePath :: !(Path p) -> RoutePredicate p
- Web.Route.Invertible.Internal: RoutePriority :: !Int -> RoutePredicate ()
- Web.Route.Invertible.Internal: RouteQuery :: !QueryString -> !(Placeholder QueryString a) -> RoutePredicate a
- Web.Route.Invertible.Internal: RouteSecure :: !Bool -> RoutePredicate ()
+ Web.Route.Invertible.Happstack: happstackRequest :: Request -> Request
+ Web.Route.Invertible.Internal: [PlaceholderFixed] :: !s -> Placeholder s ()
+ Web.Route.Invertible.Internal: [PlaceholderParameter] :: Parameter s a => Placeholder s a
+ Web.Route.Invertible.Internal: [PlaceholderValueFixed] :: !s -> PlaceholderValue s
+ Web.Route.Invertible.Internal: [PlaceholderValueParameter] :: Parameter s a => a -> PlaceholderValue s
+ Web.Route.Invertible.Internal: [RouteAccept] :: !ContentType -> RoutePredicate ()
+ Web.Route.Invertible.Internal: [RouteCustom] :: Typeable a => (Request -> Maybe a) -> (a -> Request -> Request) -> RoutePredicate a
+ Web.Route.Invertible.Internal: [RouteHost] :: !(Host h) -> RoutePredicate h
+ Web.Route.Invertible.Internal: [RouteMethod] :: !Method -> RoutePredicate ()
+ Web.Route.Invertible.Internal: [RoutePath] :: !(Path p) -> RoutePredicate p
+ Web.Route.Invertible.Internal: [RoutePriority] :: !Int -> RoutePredicate ()
+ Web.Route.Invertible.Internal: [RouteQuery] :: !QueryString -> !(Placeholder QueryString a) -> RoutePredicate a
+ Web.Route.Invertible.Internal: [RouteSecure] :: !Bool -> RoutePredicate ()
+ Web.Route.Invertible.Snap: snapRequest :: Request -> Request
+ Web.Route.Invertible.Wai: waiRequest :: Request -> Request
- Web.Route.Invertible.Common: parseParameter :: Parameter s a => s -> Maybe a
+ Web.Route.Invertible.Common: parseParameter :: (Parameter s a, Read a) => s -> Maybe a
- Web.Route.Invertible.Common: renderParameter :: Parameter s a => a -> s
+ Web.Route.Invertible.Common: renderParameter :: (Parameter s a, Show a) => a -> s

Files

Web/Route/Invertible/Happstack.hs view
@@ -1,6 +1,7 @@ -- |A compatibility routing layer for Happstack applications. module Web.Route.Invertible.Happstack   ( module Web.Route.Invertible.Common+  , happstackRequest   , routeHappstack   ) where @@ -18,6 +19,7 @@ import Web.Route.Invertible.Common import Web.Route.Invertible +-- |Convert a 'HS.Request' to a request. happstackRequest :: HS.Request -> Request happstackRequest q = Request   { requestHost = maybe [] splitHost $ HS.getHeaderBS (CI.original hHost) q
Web/Route/Invertible/Snap.hs view
@@ -1,6 +1,8 @@+{-# LANGUAGE CPP #-} -- |A compatibility routing layer for Snap applications. module Web.Route.Invertible.Snap   ( module Web.Route.Invertible.Common+  , snapRequest   , routeSnap   , routeMonadSnap   ) where@@ -18,9 +20,15 @@ import Web.Route.Invertible.Common import Web.Route.Invertible +-- |Corvert a 'Snap.Request' to a request. snapRequest :: Snap.Request -> Request snapRequest q = Request-  { requestHost = splitHost $ Snap.rqServerName q+  { requestHost = splitHost $+#if MIN_VERSION_snap_core(1,0,0)+    Snap.rqHostName q+#else+    Snap.rqServerName q+#endif   , requestSecure = Snap.rqIsSecure q   , requestMethod = toMethod $ Snap.rqMethod q   , requestPath = fst $ decodePath $ Snap.rqPathInfo q
Web/Route/Invertible/Wai.hs view
@@ -1,6 +1,7 @@ -- |A compatibility routing layer for WAI applications. module Web.Route.Invertible.Wai   ( module Web.Route.Invertible.Common+  , waiRequest   , routeWai   , routeWaiApplicationError   , routeWaiApplication@@ -16,6 +17,7 @@ import Web.Route.Invertible.Common import Web.Route.Invertible +-- |Convert a 'Wai.Request' to a request. waiRequest :: Wai.Request -> Request waiRequest q = Request   { requestHost = maybe [] splitHost $ Wai.requestHeaderHost q@@ -32,7 +34,7 @@  -- |Combine a set of applications in a routing map into a single application, calling a custom error handler in case of routing error. routeWaiApplicationError :: (Status -> ResponseHeaders -> Wai.Application) -> RouteMap Wai.Application -> Wai.Application-routeWaiApplicationError e m q r = either (\(s, h) -> e s h q r) (\a -> a q r) $ routeWai q m+routeWaiApplicationError e m q = either (\(s, h) -> e s h q) (\a -> a q) $ routeWai q m  -- |Combine a set of applications in a routing map into a single application, returning an empty error response in case of routing error. routeWaiApplication :: RouteMap Wai.Application -> Wai.Application
web-inv-route.cabal view
@@ -1,16 +1,19 @@ name:                web-inv-route-version:             0.1+version:             0.1.1 synopsis:            Composable, reversible, efficient web routing based on invertible invariants and bijections description:   Utilities to route HTTP requests, mainly focused on path components.  Routes are specified using bijections and invariant functors, allowing run-time composition (routes can be distributed across modules), reverse and forward routing derived from the same specification, and O(log n) lookups.   .   There are four steps/components of this package.   .-    1. Route endpoint specification: "Web.Route.Invertible.Common"-    2. Route map construction: "Web.Route.Invertible.Common"-    3. Route map lookup: "Web.Route.Invertible" (for the generic interface), "Web.Route.Invertible.Wai", "Web.Route.Invertible.Snap", or "Web.Route.Invertible.Happstack"-    4. Reverse routing: "Web.Route.Invertible" or "Web.Route.Invertible.URI"+     1. Route endpoint specification: "Web.Route.Invertible.Common"   .+     2. Route map construction: "Web.Route.Invertible.Common"+  .+     3. Route map lookup: "Web.Route.Invertible" (for the generic interface), "Web.Route.Invertible.Wai", "Web.Route.Invertible.Snap", or "Web.Route.Invertible.Happstack"+  .+     4. Reverse routing: "Web.Route.Invertible" or "Web.Route.Invertible.URI"+  .   Most users will just want to import a framework-specific module like "Web.Route.Invertible.Wai" (or the generic "Web.Route.Invertible"), each of which re-exports "Web.Route.Invertible.Common".   See test/Main.hs for some examples. license:             BSD3@@ -90,7 +93,7 @@    if flag(uri)     exposed-modules: Web.Route.Invertible.URI-    build-depends: network-uri+    build-depends: network-uri >= 2.6.1    if flag(wai)     exposed-modules: Web.Route.Invertible.Wai