module WebGear.Core.Response (
Response (..),
ResponseBody (..),
toWaiResponse,
) where
import qualified Data.Binary.Builder as B
import qualified Network.HTTP.Types as HTTP
import qualified Network.Wai as Wai
data Response = Response
{ Response -> Status
responseStatus :: HTTP.Status
, :: HTTP.ResponseHeaders
, Response -> ResponseBody
responseBody :: ResponseBody
}
data ResponseBody
= ResponseBodyFile FilePath (Maybe Wai.FilePart)
| ResponseBodyBuilder B.Builder
| ResponseBodyStream Wai.StreamingBody
toWaiResponse :: Response -> Wai.Response
toWaiResponse :: Response -> Response
toWaiResponse Response{ResponseHeaders
Status
ResponseBody
responseBody :: ResponseBody
responseHeaders :: ResponseHeaders
responseStatus :: Status
responseBody :: Response -> ResponseBody
responseHeaders :: Response -> ResponseHeaders
responseStatus :: Response -> Status
..} =
case ResponseBody
responseBody of
ResponseBodyFile FilePath
fpath Maybe FilePart
fpart ->
Status -> ResponseHeaders -> FilePath -> Maybe FilePart -> Response
Wai.responseFile Status
responseStatus ResponseHeaders
responseHeaders FilePath
fpath Maybe FilePart
fpart
ResponseBodyBuilder Builder
builder ->
Status -> ResponseHeaders -> Builder -> Response
Wai.responseBuilder Status
responseStatus ResponseHeaders
responseHeaders Builder
builder
ResponseBodyStream StreamingBody
stream ->
Status -> ResponseHeaders -> StreamingBody -> Response
Wai.responseStream Status
responseStatus ResponseHeaders
responseHeaders StreamingBody
stream