{-# LANGUAGE OverloadedStrings #-} module Web.Routes.Nested.FileExtListener.ByteString where import Web.Routes.Nested.FileExtListener.Types import qualified Data.ByteString.Lazy as B import Data.Map import Network.HTTP.Types (RequestHeaders, Status, status200) import Network.Wai import qualified Network.Wai.Util as U import Control.Monad.Writer -- | @ByteString@ is ambiguous - we need to know what @RequestHeaders@ and @FileExt@ should be associated. bytestring :: Monad m => FileExt -> RequestHeaders -> B.ByteString -> FileExtListenerT Response m () bytestring e = bytestringStatus e status200 bytestringStatus :: Monad m => FileExt -> Status -> RequestHeaders -> B.ByteString -> FileExtListenerT Response m () bytestringStatus e s hs i = do r <- lift $ U.bytestring s hs i FileExtListenerT $ tell $ FileExts $ singleton e r bytestringOnly :: RequestHeaders -> B.ByteString -> Response bytestringOnly = bytestringOnlyStatus status200 -- | The exact same thing as @Network.Wai.responseLBS@. bytestringOnlyStatus :: Status -> RequestHeaders -> B.ByteString -> Response bytestringOnlyStatus = responseLBS