module Network.Wai.Middleware.ContentType.ByteString where
import Network.Wai.Middleware.ContentType.Types (FileExtListenerT, tell', getLogger, FileExt, ResponseVia (..))
import Network.HTTP.Types (status200, Status, ResponseHeaders)
import Network.Wai (Response, responseLBS)
import qualified Data.ByteString.Lazy as LBS
import qualified Data.HashMap.Lazy as HM
import Control.Monad.IO.Class (MonadIO (..))
bytestring :: MonadIO m =>
FileExt
-> LBS.ByteString
-> FileExtListenerT m ()
bytestring fe i = do
aplogger <- getLogger
liftIO $ aplogger status200 (Just $ fromIntegral $ LBS.length i)
tell' $ HM.singleton fe $
ResponseVia
i
status200
[]
bytestringOnly
{-# INLINEABLE bytestring #-}
bytestringOnly :: LBS.ByteString -> Status -> ResponseHeaders -> Response
bytestringOnly b s hs = responseLBS s hs b