packages feed

wai-extra 2.0.2 → 2.0.3

raw patch · 2 files changed

+18/−6 lines, 2 files

Files

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