{-# LANGUAGE OverloadedStrings #-} module Network.Wai.Middleware.ContentType.Text 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 qualified Data.Text.Lazy as LT import qualified Data.Text.Lazy.Encoding as LT import Control.Monad.IO.Class (MonadIO) -- | Uses @Text@ as the key in the map, and @"text/plain"@ as the content type. text :: MonadIO m => LT.Text -> FileExtListenerT (MiddlewareT m) m () text = textStatusHeaders status200 [("Content-Type", "text/plain")] textWith :: MonadIO m => (Response -> Response) -> LT.Text -> FileExtListenerT (MiddlewareT m) m () textWith f = textStatusHeadersWith f status200 [("Content-Type", "text/plain")] textStatus :: MonadIO m => Status -> LT.Text -> FileExtListenerT (MiddlewareT m) m () textStatus s = textStatusHeaders s [("Content-Type", "text/plain")] textStatusWith :: MonadIO m => (Response -> Response) -> Status -> LT.Text -> FileExtListenerT (MiddlewareT m) m () textStatusWith f s = textStatusHeadersWith f s [("Content-Type", "text/plain")] textHeaders :: MonadIO m => RequestHeaders -> LT.Text -> FileExtListenerT (MiddlewareT m) m () textHeaders = textStatusHeaders status200 textHeadersWith :: MonadIO m => (Response -> Response) -> RequestHeaders -> LT.Text -> FileExtListenerT (MiddlewareT m) m () textHeadersWith f = textStatusHeadersWith f status200 textStatusHeaders :: MonadIO m => Status -> RequestHeaders -> LT.Text -> FileExtListenerT (MiddlewareT m) m () textStatusHeaders = textStatusHeadersWith id textStatusHeadersWith :: MonadIO m => (Response -> Response) -> Status -> RequestHeaders -> LT.Text -> FileExtListenerT (MiddlewareT m) m () textStatusHeadersWith f s hs i = bytestringStatusWith f Text s hs $ LT.encodeUtf8 i textOnly :: LT.Text -> Response textOnly = textOnlyStatusHeaders status200 [("Content-Type", "text/plain")] textOnlyStatus :: Status -> LT.Text -> Response textOnlyStatus s = textOnlyStatusHeaders s [("Content-Type", "text/plain")] textOnlyHeaders :: RequestHeaders -> LT.Text -> Response textOnlyHeaders = textOnlyStatusHeaders status200 textOnlyStatusHeaders :: Status -> RequestHeaders -> LT.Text -> Response textOnlyStatusHeaders s hs i = bytestringOnlyStatus s hs $ LT.encodeUtf8 i