420ebd0475
- No more Internal modules - Remove ClientLike-generic. Let's use Routes-generics - Let's see if anyone notices, otherwise we can add it back - Add Makefile for common tasks - Fix servant-client-ghcjs
54 lines
1.6 KiB
Haskell
54 lines
1.6 KiB
Haskell
{-# LANGUAGE DeriveDataTypeable #-}
|
|
{-# LANGUAGE DeriveFoldable #-}
|
|
{-# LANGUAGE DeriveFunctor #-}
|
|
{-# LANGUAGE DeriveGeneric #-}
|
|
{-# LANGUAGE DeriveTraversable #-}
|
|
{-# LANGUAGE MultiParamTypeClasses #-}
|
|
{-# LANGUAGE RankNTypes #-}
|
|
{-# LANGUAGE ScopedTypeVariables #-}
|
|
{-# LANGUAGE TypeFamilies #-}
|
|
|
|
module Servant.Client.Core.Response (
|
|
Response,
|
|
StreamingResponse,
|
|
ResponseF (..),
|
|
) where
|
|
|
|
import Prelude ()
|
|
import Prelude.Compat
|
|
|
|
import Control.DeepSeq
|
|
(NFData (..))
|
|
import qualified Data.ByteString as BS
|
|
import qualified Data.ByteString.Lazy as LBS
|
|
import qualified Data.Sequence as Seq
|
|
import Data.Typeable
|
|
(Typeable)
|
|
import GHC.Generics
|
|
(Generic)
|
|
import Network.HTTP.Types
|
|
(Header, HttpVersion (..), Status (..))
|
|
|
|
import Servant.API.Stream
|
|
(SourceIO)
|
|
|
|
data ResponseF a = Response
|
|
{ responseStatusCode :: Status
|
|
, responseHeaders :: Seq.Seq Header
|
|
, responseHttpVersion :: HttpVersion
|
|
, responseBody :: a
|
|
} deriving (Eq, Show, Generic, Typeable, Functor, Foldable, Traversable)
|
|
|
|
instance NFData a => NFData (ResponseF a) where
|
|
rnf (Response sc hs hv body) =
|
|
rnfStatus sc `seq`
|
|
rnf hs `seq`
|
|
rnfHttpVersion hv `seq`
|
|
rnf body
|
|
where
|
|
rnfStatus (Status code msg) = rnf code `seq` rnf msg
|
|
rnfHttpVersion (HttpVersion _ _) = () -- HttpVersion fields are strict
|
|
|
|
type Response = ResponseF LBS.ByteString
|
|
type StreamingResponse = ResponseF (SourceIO BS.ByteString)
|