packages feed

web-routes-wai 0.20.0 → 0.21.0

raw patch · 2 files changed

+24/−20 lines, 2 filesdep +textdep ~web-routesPVP ok

version bump matches the API change (PVP)

Dependencies added: text

Dependency ranges changed: web-routes

API changes (from Hackage documentation)

- Web.Routes.Wai: handleWai :: PathInfo url => String -> ((url -> [(String, String)] -> String) -> url -> Application) -> Application
+ Web.Routes.Wai: handleWai :: PathInfo url => ByteString -> ((url -> [(Text, Maybe Text)] -> Text) -> url -> Application) -> Application
- Web.Routes.Wai: handleWaiError :: (url -> [(String, String)] -> String) -> (String -> Either String url) -> String -> (String -> Application) -> ((url -> [(String, String)] -> String) -> url -> Application) -> Application
+ Web.Routes.Wai: handleWaiError :: (url -> [(Text, Maybe Text)] -> Text) -> (ByteString -> Either String url) -> ByteString -> (String -> Application) -> ((url -> [(Text, Maybe Text)] -> Text) -> url -> Application) -> Application
- Web.Routes.Wai: handleWaiRouteT :: PathInfo url => String -> (url -> Request -> RouteT url (Iteratee ByteString IO) Response) -> Application
+ Web.Routes.Wai: handleWaiRouteT :: PathInfo url => ByteString -> (url -> Request -> RouteT url (Iteratee ByteString IO) Response) -> Application
- Web.Routes.Wai: handleWaiRouteT_ :: (url -> [(String, String)] -> String) -> (String -> Either String url) -> String -> (url -> Request -> RouteT url (Iteratee ByteString IO) Response) -> Application
+ Web.Routes.Wai: handleWaiRouteT_ :: (url -> [(Text, Maybe Text)] -> Text) -> (ByteString -> Either String url) -> ByteString -> (url -> Request -> RouteT url (Iteratee ByteString IO) Response) -> Application
- Web.Routes.Wai: handleWai_ :: (url -> [(String, String)] -> String) -> (String -> Either String url) -> String -> ((url -> [(String, String)] -> String) -> url -> Application) -> Application
+ Web.Routes.Wai: handleWai_ :: (url -> [(Text, Maybe Text)] -> Text) -> (ByteString -> Either String url) -> ByteString -> ((url -> [(Text, Maybe Text)] -> Text) -> url -> Application) -> Application
- Web.Routes.Wai: waiSite :: Site url Application -> String -> Application
+ Web.Routes.Wai: waiSite :: Site url Application -> ByteString -> Application

Files

Web/Routes/Wai.hs view
@@ -2,37 +2,40 @@  import qualified Data.ByteString.Char8 as S import qualified Data.ByteString.Lazy.Char8 as L+import Data.Text           (Text)+import qualified Data.Text as Text+import qualified Data.Text.Encoding as Text import Data.Enumerator     (Iteratee) import Network.Wai         ( Application, Request, Response, rawPathInfo                            , responseLBS) import Network.HTTP.Types  (status404) import Web.Routes.Base     (decodePathInfo, encodePathInfo)-import Web.Routes.PathInfo (PathInfo(..), fromPathInfo, stripOverlap+import Web.Routes.PathInfo (PathInfo(..), fromPathInfo, stripOverlapBS                            , toPathInfoParams) import Web.Routes.RouteT   (RouteT, unRouteT) import Web.Routes.Site     (Site(..))  -- | a low-level function for convert a parser, printer, and routing function into an 'Application'-handleWaiError :: (url -> [(String, String)] -> String) -- ^ function to convert a 'url' + params into path info + query string-               -> (String -> Either String url)         -- ^ function to parse path info into 'url'-               -> String                                -- ^ app root+handleWaiError :: (url -> [(Text, Maybe Text)] -> Text) -- ^ function to convert a 'url' + params into path info + query string+               -> (S.ByteString -> Either String url)   -- ^ function to parse path info into 'url'+               -> S.ByteString                          -- ^ app root                -> (String -> Application)               -- ^ function to call if there is a decoding error, argument is the parse error-               -> ((url -> [(String, String)] -> String) -> url -> Application)  -- ^ routing function+               -> ((url -> [(Text, Maybe Text)] -> Text) -> url -> Application)  -- ^ routing function                -> Application handleWaiError fromUrl toUrl approot handleError handler =   \request ->-     do let fUrl = toUrl $ stripOverlap approot $ S.unpack $ rawPathInfo request+     do let fUrl = toUrl $ stripOverlapBS approot $ rawPathInfo request         case fUrl of           (Left parseError) -> handleError parseError request-          (Right url)  -> handler (\url params -> showString approot $ fromUrl url params) url request+          (Right url)  -> handler (\url params -> (Text.decodeUtf8 approot) `Text.append` (fromUrl url params)) url request  -- | a low-level function for convert a parser, printer, and routing function into an 'Application' -- -- returns 404 if the url parse fails.-handleWai_ :: (url -> [(String, String)] -> String) -- ^ function to convert a 'url' + params into path info + query string-           -> (String -> Either String url)         -- ^ function to parse path info into 'url'-           -> String                                -- ^ app root-           -> ((url -> [(String, String)] -> String) -> url -> Application) -- ^ routing function+handleWai_ :: (url -> [(Text, Maybe Text)] -> Text) -- ^ function to convert a 'url' + params into path info + query string+           -> (S.ByteString -> Either String url)         -- ^ function to parse path info into 'url'+           -> S.ByteString                                -- ^ app root+           -> ((url -> [(Text, Maybe Text)] -> Text) -> url -> Application) -- ^ routing function            -> Application handleWai_ fromUrl toUrl approot handler =     handleWaiError fromUrl toUrl approot handleError handler@@ -43,17 +46,17 @@ -- | function to convert a routing function into an Application by -- leveraging 'PathInfo' to do the url conversion handleWai :: (PathInfo url) => -             String -- ^ approot-          -> ((url -> [(String, String)] -> String) -> url -> Application) -- ^ routing function+             S.ByteString -- ^ approot+          -> ((url -> [(Text, Maybe Text)] -> Text) -> url -> Application) -- ^ routing function           -> Application handleWai approot handler = handleWai_ toPathInfoParams fromPathInfo approot handler  -- | a function to convert a parser, printer and routing function into an 'Application'. -- -- This is similar to 'handleWai_' expect that it expects the routing function to use 'RouteT'.-handleWaiRouteT_ :: (url -> [(String, String)] -> String) -- ^ function to convert a 'url' + params into path info + query string-                 -> (String -> Either String url)         -- ^ function to parse path info into 'url'-                 -> String                                -- ^ app root+handleWaiRouteT_ :: (url -> [(Text, Maybe Text)] -> Text) -- ^ function to convert a 'url' + params into path info + query string+                 -> (S.ByteString -> Either String url)         -- ^ function to parse path info into 'url'+                 -> S.ByteString                                -- ^ app root                  -> (url -> Request -> RouteT url (Iteratee S.ByteString IO) Response) -- ^ routing function                  -> Application handleWaiRouteT_  toPathInfo fromPathInfo approot handler =@@ -62,14 +65,14 @@  -- | convert a 'RouteT' based routing function into an 'Application' using 'PathInfo' to do the url conversion handleWaiRouteT :: (PathInfo url) => -                   String  -- ^ app root+                   S.ByteString  -- ^ app root                 -> (url -> Request -> RouteT url (Iteratee S.ByteString IO) Response) -- ^ routing function                 -> Application handleWaiRouteT approot handler = handleWaiRouteT_ toPathInfoParams fromPathInfo approot handler  -- |convert a 'Site url Application' into a plain-old 'Application' waiSite :: Site url Application -- ^ Site-        -> String               -- ^ approot, e.g. http://www.example.org/app+        -> S.ByteString               -- ^ approot, e.g. http://www.example.org/app         -> Application waiSite site approot = handleWai_ formatURL (parsePathSegments site . decodePathInfo) approot (handleSite site)      where
web-routes-wai.cabal view
@@ -1,5 +1,5 @@ Name:             web-routes-wai-Version:          0.20.0+Version:          0.21.0 License:          BSD3 License-File:     LICENSE Author:           jeremy@seereason.com@@ -16,8 +16,9 @@                           bytestring  == 0.9.*,                           enumerator  == 0.4.*,                           http-types  == 0.6.*,+                          text        == 0.11.*,                           wai         == 0.4.*,-                          web-routes  >= 0.25.2 && < 0.26+                          web-routes  == 0.26.*         Exposed-Modules:  Web.Routes.Wai  source-repository head