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 :: Monad m =>
FileExt
-> LBS.ByteString
-> FileExtListenerT urlbase m ()
bytestring :: forall (m :: * -> *) urlbase.
Monad m =>
FileExt -> ByteString -> FileExtListenerT urlbase m ()
bytestring FileExt
fe ByteString
i = do
Status -> Maybe Integer -> IO ()
aplogger <- forall (m :: * -> *) urlbase.
Monad m =>
FileExtListenerT urlbase m (Status -> Maybe Integer -> IO ())
getLogger
forall w (m :: * -> *). (Monoid w, MonadState w m) => w -> m ()
tell' forall a b. (a -> b) -> a -> b
$ forall k v. Hashable k => k -> v -> HashMap k v
HM.singleton FileExt
fe forall a b. (a -> b) -> a -> b
$
forall a.
a
-> Status
-> ResponseHeaders
-> (a -> Status -> ResponseHeaders -> Response)
-> ResponseVia
ResponseVia
ByteString
i
Status
status200
[]
ByteString -> Status -> ResponseHeaders -> Response
bytestringOnly
{-# INLINEABLE bytestring #-}
bytestringOnly :: LBS.ByteString -> Status -> ResponseHeaders -> Response
bytestringOnly :: ByteString -> Status -> ResponseHeaders -> Response
bytestringOnly ByteString
b Status
s ResponseHeaders
hs = Status -> ResponseHeaders -> ByteString -> Response
responseLBS Status
s ResponseHeaders
hs ByteString
b