web-routes-happstack 0.22.2 → 0.23.0
raw patch · 2 files changed
+24/−16 lines, 2 filesdep +bytestringdep +textdep ~web-routesPVP ok
version bump matches the API change (PVP)
Dependencies added: bytestring, text
Dependency ranges changed: web-routes
API changes (from Hackage documentation)
- Web.Routes.Happstack: implSite :: (Functor m, Monad m, MonadPlus m, ServerMonad m) => String -> FilePath -> Site url (m a) -> m a
+ Web.Routes.Happstack: implSite :: (Functor m, Monad m, MonadPlus m, ServerMonad m) => Text -> Text -> Site url (m a) -> m a
- Web.Routes.Happstack: implSite_ :: (Functor m, Monad m, MonadPlus m, ServerMonad m) => String -> FilePath -> Site url (m a) -> m (Either String a)
+ Web.Routes.Happstack: implSite_ :: (Functor m, Monad m, MonadPlus m, ServerMonad m) => Text -> Text -> Site url (m a) -> m (Either String a)
- Web.Routes.Happstack: seeOtherURL :: (ShowURL m, FilterMonad Response m) => URL m -> m Response
+ Web.Routes.Happstack: seeOtherURL :: (MonadRoute m, FilterMonad Response m) => URL m -> m Response
Files
- Web/Routes/Happstack.hs +18/−14
- web-routes-happstack.cabal +6/−2
Web/Routes/Happstack.hs view
@@ -3,16 +3,19 @@ import Control.Applicative ((<$>)) import Control.Monad (MonadPlus(mzero))+import qualified Data.ByteString.Char8 as C import Data.List (intercalate)+import Data.Text (Text)+import qualified Data.Text as Text import Happstack.Server (Happstack, FilterMonad(..), ServerMonad(..), WebMonad(..), HasRqData(..), ServerPartT, Response, Request(rqPaths), ToMessage(..), dirs, seeOther)-import Web.Routes.RouteT (RouteT(RouteT), ShowURL, URL, showURL, liftRouteT, mapRouteT)+import Web.Routes.RouteT (RouteT(RouteT), MonadRoute, URL, showURL, liftRouteT, mapRouteT) import Web.Routes.Site (Site, runSite) instance (ServerMonad m) => ServerMonad (RouteT url m) where askRq = liftRouteT askRq localRq f m = mapRouteT (localRq f) m -instance (FilterMonad a m)=> FilterMonad a (RouteT url m) where+instance (FilterMonad a m) => FilterMonad a (RouteT url m) where setFilter = liftRouteT . setFilter composeFilter = liftRouteT . composeFilter getFilter = mapRouteT getFilter @@ -33,8 +36,8 @@ -- -- see also: 'implSite_' implSite :: (Functor m, Monad m, MonadPlus m, ServerMonad m) => - String -- ^ "http://example.org"- -> FilePath -- ^ path to this handler, .e.g. "/route/"+ Text -- ^ "http://example.org"+ -> Text -- ^ path to this handler, .e.g. "/route/" or "" -> Site url (m a) -- ^ the 'Site' -> m a implSite domain approot siteSpec =@@ -50,17 +53,18 @@ -- -- see also: 'implSite' implSite_ :: (Functor m, Monad m, MonadPlus m, ServerMonad m) => - String -- ^ "http://example.org"- -> FilePath -- ^ path to this handler, .e.g. "/route/"+ Text -- ^ "http://example.org" (or "http://example.org:80")+ -> Text -- ^ path to this handler, .e.g. "/route/" or "" -> Site url (m a) -- ^ the 'Site' -> m (Either String a) implSite_ domain approot siteSpec =- dirs approot $ do rq <- askRq- let pathInfo = intercalate "/" (map escapeSlash (rqPaths rq))- f = runSite (domain ++ approot) siteSpec pathInfo- case f of- (Left parseError) -> return (Left parseError)- (Right sp) -> Right <$> (localRq (const $ rq { rqPaths = [] }) sp)+ dirs (Text.unpack approot) $+ do rq <- askRq+ let pathInfo = intercalate "/" (map escapeSlash (rqPaths rq))+ f = runSite (domain `Text.append` approot) siteSpec (C.pack pathInfo)+ case f of+ (Left parseError) -> return (Left parseError)+ (Right sp) -> Right <$> (localRq (const $ rq { rqPaths = [] }) sp) where escapeSlash :: String -> String escapeSlash [] = []@@ -78,7 +82,7 @@ -} -- | similar to 'seeOther' but takes a 'URL' 'm' as an argument-seeOtherURL :: (ShowURL m, FilterMonad Response m) => URL m -> m Response+seeOtherURL :: (MonadRoute m, FilterMonad Response m) => URL m -> m Response seeOtherURL url = do otherURL <- showURL url- seeOther otherURL (toResponse "")+ seeOther (Text.unpack otherURL) (toResponse "")
web-routes-happstack.cabal view
@@ -1,5 +1,5 @@ Name: web-routes-happstack-Version: 0.22.2+Version: 0.23.0 License: BSD3 License-File: LICENSE Author: jeremy@seereason.com@@ -11,7 +11,11 @@ Build-type: Simple Library- Build-Depends: base >= 4 && < 5, happstack-server >= 6.0, web-routes >= 0.24.1+ Build-Depends: base >= 4 && < 5, + bytestring == 0.9.*,+ happstack-server >= 6.0, + text == 0.11.*,+ web-routes >= 0.26.1 Exposed-Modules: Web.Routes.Happstack source-repository head