module Network.Wai.Middleware.ContentType.Clay where
import Network.Wai.Middleware.ContentType.Types
import Network.Wai.Middleware.ContentType.ByteString
import Network.HTTP.Types (RequestHeaders, Status, status200)
import Network.Wai.Trans
import Clay.Render
import Clay.Stylesheet
import qualified Data.Text.Lazy.Encoding as LT
import Control.Monad.IO.Class (MonadIO)
clay :: MonadIO m =>
Config -> [App] -> Css
-> FileExtListenerT (MiddlewareT m) m ()
clay c as = clayStatusHeaders c as status200 [("Content-Type", "text/css")]
clayWith :: MonadIO m =>
(Response -> Response) -> Config -> [App] -> Css
-> FileExtListenerT (MiddlewareT m) m ()
clayWith f c as = clayStatusHeadersWith f c as status200 [("Content-Type", "text/css")]
clayStatus :: MonadIO m =>
Config -> [App] -> Status -> Css
-> FileExtListenerT (MiddlewareT m) m ()
clayStatus c as s = clayStatusHeaders c as s [("Content-Type", "text/css")]
clayStatusWith :: MonadIO m =>
(Response -> Response) -> Config -> [App] -> Status -> Css
-> FileExtListenerT (MiddlewareT m) m ()
clayStatusWith f c as s = clayStatusHeadersWith f c as s [("Content-Type", "text/css")]
clayHeaders :: MonadIO m =>
Config -> [App] -> RequestHeaders -> Css
-> FileExtListenerT (MiddlewareT m) m ()
clayHeaders c as = clayStatusHeaders c as status200
clayHeadersWith :: MonadIO m =>
(Response -> Response) -> Config -> [App] -> RequestHeaders -> Css
-> FileExtListenerT (MiddlewareT m) m ()
clayHeadersWith f c as = clayStatusHeadersWith f c as status200
clayStatusHeaders :: MonadIO m =>
Config -> [App] -> Status -> RequestHeaders -> Css
-> FileExtListenerT (MiddlewareT m) m ()
clayStatusHeaders = clayStatusHeadersWith id
clayStatusHeadersWith :: MonadIO m =>
(Response -> Response) -> Config -> [App] -> Status -> RequestHeaders -> Css
-> FileExtListenerT (MiddlewareT m) m ()
clayStatusHeadersWith f c as s hs i =
bytestringStatusWith f Css s hs $ LT.encodeUtf8 $ renderWith c as i
clayOnly :: Config -> [App] -> Css -> Response
clayOnly c as = clayOnlyStatusHeaders c as status200 [("Content-Type", "text/css")]
clayOnlyStatus :: Config -> [App] -> Status -> Css -> Response
clayOnlyStatus c as s = clayOnlyStatusHeaders c as s [("Content-Type", "text/css")]
clayOnlyHeaders :: Config -> [App] -> RequestHeaders -> Css -> Response
clayOnlyHeaders c as = clayOnlyStatusHeaders c as status200
clayOnlyStatusHeaders :: Config -> [App] -> Status -> RequestHeaders -> Css -> Response
clayOnlyStatusHeaders c as s hs i = bytestringOnlyStatus s hs $ LT.encodeUtf8 $ renderWith c as i