wai-extra 2.0.2 → 2.0.3
raw patch · 2 files changed
+18/−6 lines, 2 files
Files
- Network/Wai/Middleware/Vhost.hs +17/−5
- wai-extra.cabal +1/−1
Network/Wai/Middleware/Vhost.hs view
@@ -1,5 +1,5 @@ {-# LANGUAGE OverloadedStrings #-}-module Network.Wai.Middleware.Vhost (vhost, redirectWWW) where+module Network.Wai.Middleware.Vhost (vhost, redirectWWW, redirectTo, redirectToLogged) where import Network.Wai @@ -7,6 +7,7 @@ import qualified Data.Text.Encoding as TE import Data.Text (Text) import qualified Data.ByteString as BS+import Data.Monoid (mappend) vhost :: [(Request -> Bool, Application)] -> Application -> Application vhost vhosts def req =@@ -15,9 +16,20 @@ (_, app):_ -> app req redirectWWW :: Text -> Application -> Application -- W.MiddleWare-redirectWWW home app req =- if maybe True (BS.isPrefixOf "www") $ lookup "host" $ requestHeaders req- then return $ responseLBS H.status301- [ ("Content-Type", "text/plain") , ("Location", TE.encodeUtf8 home) ] "Redirect"+redirectWWW home =+ redirectIf home (maybe True (BS.isPrefixOf "www") . lookup "host" . requestHeaders)++redirectIf :: Text -> (Request -> Bool) -> Application -> Application+redirectIf home cond app req =+ if cond req+ then return $ redirectTo $ TE.encodeUtf8 home else app req +redirectTo :: BS.ByteString -> Response+redirectTo location = responseLBS H.status301+ [ ("Content-Type", "text/plain") , ("Location", location) ] "Redirect"++redirectToLogged :: (Text -> IO ()) -> BS.ByteString -> IO Response+redirectToLogged logger loc = do+ logger $ "redirecting to: " `mappend` TE.decodeUtf8 loc+ return $ redirectTo loc
wai-extra.cabal view
@@ -1,5 +1,5 @@ Name: wai-extra-Version: 2.0.2+Version: 2.0.3 Synopsis: Provides some basic WAI handlers and middleware. Description: The goal here is to provide common features without many dependencies. License: MIT