packages feed

wai-middleware-crowd-0.1.3: app/Rdr2tls.hs

{-# LANGUAGE OverloadedStrings #-}
-- | rdr2tls as a middleware
module Rdr2tls (rdr2tls) where

import Network.HTTP.Types (status307)
import Network.Wai
import Network.Wai.Request
import qualified Data.ByteString as S

rdr2tls :: Middleware
rdr2tls app req send
    | appearsSecure req = app req send
    | otherwise =
        let dest = S.concat
                [ guessApproot req { isSecure = True }
                , rawPathInfo req
                , rawQueryString req
                ]
         in send $ responseLBS status307 [("Location", dest)] "Redirecting"