{-# LANGUAGE
OverloadedStrings
#-}
module Network.Wai.Middleware.ContentType.Json where
import Network.Wai.Middleware.ContentType.Types (FileExtListenerT, FileExt (Json), mapHeaders, overFileExts)
import Network.Wai.Middleware.ContentType.ByteString (bytestringOnly, bytestring)
import Network.HTTP.Types (Status, ResponseHeaders)
import Network.Wai (Response)
import qualified Data.Aeson as A
import Control.Monad.IO.Class (MonadIO (..))
json :: ( A.ToJSON j
, Monad m
) => j
-> FileExtListenerT urlbase m ()
json :: forall j (m :: * -> *) urlbase.
(ToJSON j, Monad m) =>
j -> FileExtListenerT urlbase m ()
json =
forall (m :: * -> *) urlbase a.
Monad m =>
[FileExt]
-> (ResponseVia -> ResponseVia)
-> FileExtListenerT urlbase m a
-> FileExtListenerT urlbase m a
overFileExts [FileExt
Json] ((ResponseHeaders -> ResponseHeaders) -> ResponseVia -> ResponseVia
mapHeaders ((HeaderName
"Content-Type",ByteString
"application/json")forall a. a -> [a] -> [a]
:))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *) urlbase.
Monad m =>
FileExt -> ByteString -> FileExtListenerT urlbase m ()
bytestring FileExt
Json forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. ToJSON a => a -> ByteString
A.encode
{-# INLINEABLE json #-}
jsonOnly :: A.ToJSON j => j -> Status -> ResponseHeaders -> Response
jsonOnly :: forall j. ToJSON j => j -> Status -> ResponseHeaders -> Response
jsonOnly j
j =
ByteString -> Status -> ResponseHeaders -> Response
bytestringOnly (forall a. ToJSON a => a -> ByteString
A.encode j
j)
{-# INLINEABLE jsonOnly #-}